Android SipManager: android.net.sip.SipException: SipService.createSession () возвращает null

Итак, я кодировал это приложение Android Sip с помощью Androids Sip library в течение некоторого времени, но я не могу заставить регистрацию работать. В настоящее время он дает мне следующую ошибку, когда я вызываю 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 

Кто-нибудь знает, что я делаю неправильно здесь? Кроме того, я пытаюсь вручную зарегистрировать профиль sip, а не используя авторегистрацию. (Кстати, мой первый вопрос о stackoverflow, так что будьте осторожны :))

Solutions Collecting From Web of "Android SipManager: android.net.sip.SipException: SipService.createSession () возвращает null"

Похоже, что есть хотя бы еще одна причуда, приводящая к тому же коду ошибки. Если у вас есть предопределенная учетная запись с тем же URI запроса на вашем телефоне, второй способ, который вы пытаетесь создать в своем приложении, терпит неудачу таким образом. Обратите внимание, что это происходит, даже если эта учетная запись не установлена ​​для входящих вызовов (= SIP Register в бэкэнд). Я надеюсь, что команда Android исправит эту ошибку или по крайней мере выбросит значимую ошибку.

Обновление: с этим решением исключение прошло, но я не смог получить никаких вызовов.

Я только нашел решение. Перед вызовом регистра необходимо открыть вызов. Кроме того, не используйте прослушиватель с открытым (SipDemo говорит так, не уверен, почему), но зарегистрируйте его после регистрации (работает для меня).

Итак, мой код:

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