2016-09-20 4 views
9

このエラーが頻繁に発生し、アプリがクラッシュする理由を理解できません。エラー以下Smack「ローカル(ユーザ)JIDが設定されている必要があります」エラー

:私は、次のURLで指定されたソリューションを使用して解決しようとしましたが、また私のcase.Urlで働いていないその

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.studyboard/com.studyboard.ChatMessageActivity}: java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2493) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2555) 
     at android.app.ActivityThread.access$800(ActivityThread.java:176) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1437) 
     at android.os.Handler.dispatchMessage(Handler.java:111) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5576) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751) 
Caused by java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once 
     at org.jivesoftware.smack.filter.IQReplyFilter.<init>(IQReplyFilter.java:94) 
     at org.jivesoftware.smack.AbstractXMPPConnection.createPacketCollectorAndSend(AbstractXMPPConnection.java:690) 
     at org.jivesoftware.smackx.iqlast.LastActivityManager.getLastActivity(LastActivityManager.java:239) 
     at com.studyboard.utils.ChatUtil.getLastActivity(ChatUtil.java:674) 
     at com.studyboard.ChatMessageActivity.initChat(ChatMessageActivity.java:339) 
     at com.studyboard.ChatMessageActivity.onCreate(ChatMessageActivity.java:220) 
     at android.app.Activity.performCreate(Activity.java:6005) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2446) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2555) 
     at android.app.ActivityThread.access$800(ActivityThread.java:176) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1437) 
     at android.os.Handler.dispatchMessage(Handler.java:111) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5576) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751) 

は次のとおりです。 -https://community.igniterealtime.org/thread/58150

コードを使用してejabberdに接続し、Smack 4.1を使用してログインする場合: -

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder(); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setServiceName(Constants.HOST); 
    config.setPort(Constants.PORT); 
    config.setHost(Constants.HOST); 
    config.setDebuggerEnabled(true); 
    config.setSendPresence(true); 
    config.setUsernameAndPassword(strUsername + "@" + Constants.HOST, strPassword); 


    SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1"); 
    SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5"); 
    SASLAuthentication.unBlacklistSASLMechanism("PLAIN"); 
    objXmpptcpConnection = new XMPPTCPConnection(config.build()); 
    objXmpptcpConnection.setUseStreamManagement(true); 
    objXmpptcpConnection.setUseStreamManagementResumption(true); 
    try { 
     objXmpptcpConnection.connect(); 
     System.out.println("Connected to===>" + objXmpptcpConnection.getHost()); 
     objXmpptcpConnection.login(); 

    } catch (XMPPException e) { 
     e.printStackTrace(); 

    } catch (SmackException e) { 
     e.printStackTrace(); 

    } catch (IOException e) { 
     e.printStackTrace(); 

    } 

以下の関数で実際にエラーが発生するretuユーザーのRNS私の最後の状態は、私がおしゃべりしていますとのために: -

public String getLastActivity(XMPPTCPConnection objXmpptcpConnection, String strUser) { 

     try { 
      LastActivityManager objLastActivityManager = LastActivityManager.getInstanceFor(objXmpptcpConnection); 
      LastActivity objLastActivity = null; 
      $$ objLastActivity = objLastActivityManager.getLastActivity(strUser + "@" + Constants.HOST); 
      System.out.println("MESSAGE:" + objLastActivity.getStatusMessage()); 
      System.out.println("IDLE TIME::" + objLastActivity.getIdleTime()); 

      return convertTime(objLastActivity.getIdleTime()); 

     } catch (SmackException.NoResponseException e) { 
      e.printStackTrace(); 
      return "Offline"; 
     } catch (XMPPException.XMPPErrorException e) { 
      e.printStackTrace(); 
      return "Offline"; 
     } catch (SmackException.NotConnectedException e) { 
      e.printStackTrace(); 
      return "Offline"; 
     } 

    } 

私は$$シンボル

+0

あなたのコードを追加してください、それは不可能です – MrPk

+0

@MrPk私のコードを追加しました。エラーがあれば教えてください –

答えて

0

ユーザー名とエラー行をマークしていることは間違っている:

あなたはユーザーとの接続にトラインです@サーバー@サーバー。 Jidの部分を連結しないでください、それは自動です。

さらに、ユーザーのリソース(例:デバイスの名前、デフォルトはSpark)を指定する必要があります。

注意:デスクトップスマッシュは、アンドロイドに対して異なるクラスを使用することがあります。 認証に問題があるかもしれませんが、悪いJIDを指定すると "接続"できますが "ログイン"できなくなり、リソースを省略するといくつかの機能が失われる可能性があります。

+1

私は、アプリケーションをデバッグしているときにコードは正常に動作します。このエラーは、Android 7.0および4.0デバイスで発生します。 –

+0

@Anilは今見て、私に知らせてください – MrPk

+0

私はアプリケーションをデバッグさせてください –

関連する問題