在Android中使用smack 4.1获取在线用户(名册条目)

我一直试图在 Android中使用smack 4.1 beta 2来获取名单条目.

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-UpgradeGuide
以上链接引用..

“Roster现在遵循Manager模式(使用Roster.instanceFor获取实例,不再使用XMPPConnection.getRoster)”

首先,我无法获得“名册”对象,我导入的库可能没有该包,或者我在这里想念任何库?

我使用上面链接中提到的所有库.

任何人都可以帮助我使用smack 4.1获取名册条目吗?

谢谢

解决方法

这是一个循序渐进的解决方案,通过(希望)回答您的问题得出结论.您应该特别注意STEP 2中的Java导入和STEP 4中的Roster.reloadAndWait()方法.

注意:建议使用AsyncTask执行Smack代码.

第1步:包括以下依赖项.对于Android Studio用户,它位于build.gradle中(模块:app)

dependencies {
    compile "org.igniterealtime.smack:smack-android:4.1.0-rc1"
    compile "org.igniterealtime.smack:smack-android-extensions:4.1.0-rc1"
    compile "org.igniterealtime.smack:smack-tcp:4.1.0-rc1" 
}

还要确保您的程序具有TCP活动的适当权限.对于Android Studio用户,您可以将其添加到AndroidManifest.xml文件中:

<uses-permission android:name="android.permission.INTERNET"/>

第2步:导入以下内容

import org.jivesoftware.smack.roster.*; /*you may have been missing this*/
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.tcp.*;
import java.util.Collection; /*optional*/

第3步:连接到服务器

/*Example solution. The exact settings would have to be adjusted outside  of practice*/
XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration
    .builder()
    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
    .setServiceName("192.168.2.14")
    .setHost("192.168.2.14")
    .setPort(5222)
    .setCompressionEnabled(false).build();
    XMPPTCPConnection connection = new XMPPTCPConnection(conf);

try {
    connection.connect();
    connection.login("john","123");
...

第4步:获取名单

...
Roster roster = Roster.getInstanceFor(connection);

if (!roster.isLoaded()) 
    roster.reloadAndWait();

Collection <RosterEntry> entries = roster.getEntries();

for (RosterEntry entry : entries) 
    System.out.println("Here: " + entry);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...