3

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()別のプロジェクト (Android ではなく Java) から呼び出して単純な Java アプリケーションを実行すると、正常に動作します。

何が問題なのかわかりません。

ありがとう

4

2 に答える 2

4

標準の Smack ライブラリを使用していますか? 数か月前に XMPP をいじっていたとき、Android で動作するようにライブラリにパッチを当てる必要がありました。たぶんこれが役立ちます:

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

于 2010-09-20T13:21:31.207 に答える
2

Android でプログラムを実行できない場合は、connect() と login() SMACK API が正常に動作しているかどうかを確認してください。

uses-permission android:name="android.permission.INTERNET" (< />別の中かっこで囲みます)

connect() と login() が機能するように AndroidManifest ファイルに追加します。また、パッチを適用した Smack.jar を使用することを忘れないでください。

于 2010-09-21T03:57:05.360 に答える