roster.getEntities() 总是返回 null aSmack android
Posted
技术标签:
【中文标题】roster.getEntities() 总是返回 null aSmack android【英文标题】:roster.getEntities() always return null aSmack android 【发布时间】:2014-07-01 09:22:03 【问题描述】:我想使用 xmpp 和 asmack 制作一个聊天应用程序,但我遇到了一个问题:我无法获取服务器上的所有用户。首先我建立了一个连接,然后我登录了它,然后我尝试检索用户,但我总是得到一个空集合。
public void connect()
final ProgressDialog dialog = ProgressDialog.show(this,
"Connecting...", "Please wait...", false);
Thread t = new Thread(new Runnable()
@Override
public void run()
// Create a connection
ConnectionConfiguration connConfig = new ConnectionConfiguration(
HOST, PORT, SERVICE);
XMPPConnection connection = new XMPPConnection(connConfig);
try
connection.connect();
Log.i("XMPPChatDemoActivity",
"Connected to " + connection.getHost());
catch (XMPPException ex)
Log.e("XMPPChatDemoActivity", "Failed to connect to "
+ connection.getHost());
Log.e("XMPPChatDemoActivity", ex.toString());
setConnection(null);
try
// SASLAuthentication.supportSASLMechanism("PLAIN", 0);
connection.login(USERNAME, PASSWORD);
Log.i("XMPPChatDemoActivity",
"Logged in as " + connection.getUser());
// Set the status to available
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
setConnection(connection);
// here in roster i always get null.
Collection<RosterEntry> roster = connection.getRoster()
.getEntries();
for (RosterEntry entry : roster)
Log.d("XMPPChatDemoActivity",
"--------------------------------------");
Log.d("XMPPChatDemoActivity", "RosterEntry " + entry);
Log.d("XMPPChatDemoActivity",
"User: " + entry.getUser());
Log.d("XMPPChatDemoActivity",
"Name: " + entry.getName());
Log.d("XMPPChatDemoActivity",
"Status: " + entry.getStatus());
Log.d("XMPPChatDemoActivity",
"Type: " + entry.getType());
catch (XMPPException ex)
Log.e("XMPPChatDemoActivity", "Failed to log in as "
+ USERNAME);
Log.e("XMPPChatDemoActivity", ex.toString());
setConnection(null);
dialog.dismiss();
);
t.start();
dialog.show();
【问题讨论】:
您使用的是哪个版本的 aSmack? 是的,嗯,这就像一个 4 岁的版本。试试 aSmack 4.0.0。 现在我正在使用 asmack-android-8-4.0.0,我给了我异常 java.lang.NoClassDefFoundError: org.jivesoftware.smack.ConnectionConfiguration @Raghunandan 链接已损坏.. 你能更新一下吗 @chhameed 我不知道为什么链接被破坏了。我已删除评论 【参考方案1】:要获取名册,只需搜索一个名为注册属性的插件,或者如果它是预安装的,请在用户部分搜索它。
然后选中启用自动将新用户添加到组。 同样在底部创建一个新的默认组,以便在创建新用户时将其自动添加到此默认组中。
之后运行相同的代码,您将获得基于 xmpp 协议的服务器上的所有用户。
【讨论】:
以上是关于roster.getEntities() 总是返回 null aSmack android的主要内容,如果未能解决你的问题,请参考以下文章