Android SipManager:android.net.sip.SipException:SipService.createSession()返回null

所以,我一直在使用Androids Sip库编写这个Android Sip应用程序一段时间,但我无法注册工作。 目前,当我调用SipManager.register()时,会出现以下错误: android.net.sip.SipException: SipService.createSession() returns null

我的代码:

 public static void Register(final String username, final String password, final String domain, final String cbf) throws ParseException, SipException { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.Register"); /* * Luodaan SIP-profiili */ SipProfile.Builder builder = new SipProfile.Builder(username, domain); builder.setPassword(password); //builder.setProtocol("TCP"); //builder.setPort(5060); builder.setAutoRegistration(false); _sipprofile = builder.build(); Intent intent = new Intent(); intent.setAction("android.jahtipuhelin.INCOMING_CALL"); PendingIntent pendingIntent = PendingIntent.getBroadcast(_context, 0, intent, Intent.FILL_IN_DATA); _sipmanager.open(_sipprofile, pendingIntent, new SipRegistrationListener() { @Override public void onRegistering(String s) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.Register - testi 0"); } @Override public void onRegistrationDone(String s, long l) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.Register - testi 1"); try { _sipmanager.register(_sipprofile, 30, null); _sipmanager.setRegistrationListener(_sipprofile.getUriString(), new JPSipRegistrationListener(_class, cbf)); } catch (SipException e) { Log.e(MainActivity.LOGTAG,e.getClass().toString()+ ": "+ e.getMessage()); e.printStackTrace(); } } @Override public void onRegistrationFailed(String s, int i, String s2) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.Register - testi 2"); Log.d(MainActivity.LOGTAG, s2); try { _sipmanager.register(_sipprofile, 30, null); _sipmanager.setRegistrationListener(_sipprofile.getUriString(), new JPSipRegistrationListener(_class, cbf)); } catch (SipException e) { Log.e(MainActivity.LOGTAG,e.getClass().toString()+ ": "+ e.getMessage()); e.printStackTrace(); } } });//*/ Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.Register - 2"); } private static class JPSipRegistrationListener implements SipRegistrationListener { private MainActivity _parent; private String _callBack; public JPSipRegistrationListener(MainActivity ma, String callBack) { this._parent = ma; this._callBack = callBack; } @Override public void onRegistering(String localProfileUri) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.onRegistering"); _parent.callSub(_callBack, REGISTERING, 0, ""); } @Override public void onRegistrationDone(String localProfileUri, long expiryTime) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.onRegistrationDone"); _parent.callSub(_callBack, REGISTRATION_DONE, 0, ""); } @Override public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) { Log.d(MainActivity.LOGTAG, "testi: JahtipuhelinSipManager.onRegistrationFailed"); Log.e(MainActivity.LOGTAG, "Virhe Sip-rekisteröinnissä: "+errorCode+": "+errorMessage); if (errorCode == -10) { return; } _parent.callSub(_callBack, REGISTRATION_FAILED, errorCode, errorMessage); } } 

运行,提供以下输出:

 08-11 18:50:58.276 24449-24449/fi.hieta.aatu.android.jahtipuhelin D/fi.hieta.aatu.android.jahtipuhelin: testi: JahtipuhelinSipManager.Register 08-11 18:50:58.436 24449-24465/fi.hieta.aatu.android.jahtipuhelin D/fi.hieta.aatu.android.jahtipuhelin: testi: JahtipuhelinSipManager.Register - testi 2 08-11 18:50:58.436 24449-24465/fi.hieta.aatu.android.jahtipuhelin D/fi.hieta.aatu.android.jahtipuhelin: registration not running 08-11 18:50:58.446 24449-24449/fi.hieta.aatu.android.jahtipuhelin D/fi.hieta.aatu.android.jahtipuhelin: testi: JahtipuhelinSipManager.Register - 2 08-11 18:50:58.666 24449-24465/fi.hieta.aatu.android.jahtipuhelin E/fi.hieta.aatu.android.jahtipuhelin: class android.net.sip.SipException: SipService.createSession() returns null 

有谁知道我在这里做错了吗? 此外,我试图手动注册SIPconfiguration文件,而不是使用自动注册。 (顺便说一句,我的第一个问题在stackoverflow,所以请温柔:))

Solutions Collecting From Web of "Android SipManager:android.net.sip.SipException:SipService.createSession()返回null"

似乎至less有另一个怪癖导致相同的错误代码。 如果您碰巧在手机上有一个预定义的帐户,并且您的手机中正在尝试创build的第二个帐户将以这种方式失败。 请注意,即使该帐户未设置为传入呼叫(=后端的SIP注册),也会发生这种情况。 我希望Android团队能够修复这个bug,或者至less抛出一个有意义的错误。

更新:使用该解决scheme,exception消失了,但我无法接收任何呼叫。

我刚刚find解决scheme。 在你打电话之前,你必须打开电话。 另外不要使用开放的监听器(SipDemo这样说,不知道为什么),但注册后注册(为我工作)。

所以我的代码是:

 manager.open(localProfile, pendingIntent, null); manager.register(localProfile, 20, listener); manager.setRegistrationListener(localProfile.getUriString(), listener);