Android SipManager: android.net.sip.SipException: SipService.createSession() returns null(Android SipManager:android.net.sip.SipException:SipService.createSession()返回空)
问题描述
所以,我使用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
有人知道我做错了什么吗?此外,我正在尝试手动注册sip配置文件,而不是使用自动注册。(顺便提一下我关于堆栈溢出的第一个问题,所以请轻一点:))
推荐答案
似乎至少有另一个异常导致相同的错误代码。如果您的手机上碰巧有一个预定义的帐户,并且具有相同的请求URI,那么您试图在您的应用程序中创建的第二个帐户就会以这种方式失败。请注意,即使没有为来电设置该帐户(=后端中的SIP注册),也会发生这种情况。 我希望Android团队能够修复这个错误,或者至少抛出一个有意义的错误。
这篇关于Android SipManager:android.net.sip.SipException:SipService.createSession()返回空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Android SipManager:android.net.sip.SipException:SipService.createSession()返回空
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01