android asmack调用MultiUserChat.getHostedRooms方法出现空指针的异常解决方案
今天在做即时通讯群聊时,调用MultiUserChat.getHostedRooms(conn, SmackTools.getInstance().conn.getServiceName());方法获取服务列表时总是出现空指针的情况。
当时出现这个错误的时候感觉是非怪的,因为参数:conn和服务名都不为空。而MultiUserChat.getHostedRooms也不可能为空。但是错误的异常却是空指针,郁闷。
找了好长时间都没找到到底是什么原因引起的异常,最后在stackoverflow上找到了灵感。
问题链接:http://stackoverflow.com/questions/10296022/cannot-get-list-of-public-rooms-from-xmpp-server-on-android/11664266#11664266
以上博客提出了针对此问题的解决方案:
在初始化XMPPConnection之前初始化ServiceDiscoveryManager类即可
以下是初始化代码:
config = new ConnectionConfiguration(server, 5222); Class.forName("org.jivesoftware.smackx.ServiceDiscoveryManager", true, SmackTools.class.getClassLoader()); // 是否启用压缩 // config.setCompressionEnabled(true); // 是否启用安全认证 config.setSASLAuthenticationEnabled(false); config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); // 是否启用调试 config.setDebuggerEnabled(false); // 创建连接 conn = new XMPPConnection(config);
具体为什么这样做我现在还没弄清楚,有哪位朋友弄清楚这个问题,就贴出来分享一下呗。
分类:
Exception
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 基于Blazor实现的运输信息管理系统
· 如何统计不同电话号码的个数?—位图法
· 微信支付功能的设计实现与关键实践(UniApp+Java)全代码