在 android 上使用 smack 面临问题

Posted

技术标签:

【中文标题】在 android 上使用 smack 面临问题【英文标题】:facing problem using smack on android 【发布时间】:2010-09-20 10:31:45 【问题描述】:

我在 android 应用程序中有一个按钮。单击按钮时,将调用以下代码:

TestSmack a = new TestSmack();
a.login("abc@gmai.com","password");

我有一个TestSmack类.....在我写的这个类的构造函数中

public TestSmack ()

    ConnectionConfiguration connConfig = new 
          ConnectionConfiguration("talk.google.com", 5222, "gmail.com");
    connection = new XMPPConnection(connConfig);

其中 XMPPConnection 连接是一个全局变量。在登录方法中我尝试连接到服务器:

public void login(String userName, String password) throws XMPPException

    SASLAuthentication.supportSASLMechanism("PLAIN", 0);
    connection.connect();    
    connection.login(userName, password);

但它崩溃了。我不知道发生了什么。

而当我从 main() 调用这些所有方法并在单独的项目(Java,而不是 Android)中运行一个简单的 Java 应用程序时,它工作正常。

我无法弄清楚问题所在。

谢谢

【问题讨论】:

【参考方案1】:

您使用的是标准的 Smack 库吗?几个月前,当我在玩 XMPP 时,您必须对库进行修补才能使其在 Android 上运行。也许这会有所帮助:

http://davanum.wordpress.com/2008/12/29/updated-xmpp-client-for-android/

【讨论】:

谢谢您的回复。实际上,当通过 android 访问 XMPP 服务器时,我们需要在 android.manifest 文件中添加以下行: 为功能连接和登录工作....我希望它会帮助别人【参考方案2】:

如果有人无法在 android 上运行程序,请检查 connect() 和 login() SMACK API 是否工作正常。因为我发现你需要添加

uses-permission android:name="android.permission.INTERNET"(将其括在 单独的大括号内)

在 AndroidManifest 文件中让 connect() 和 login() 工作。别忘了使用修补过的 Smack.jar。

【讨论】:

以上是关于在 android 上使用 smack 面临问题的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 smack openfire android 中监听传入的订阅请求

Openfire:在android上使用smack向特定人广播消息

在 android 上使用 smack 4.1.0 的 openfire 问题

在 Android Studio 上使用 Smack 构建 XML 流消息

无法在 android 上使用 igniterealtime smack 无法解析 xpp3:xpp3:1.1.4c

简单的 smack jabber 程序需要很长时间才能在 android 上连接