2016-04-05 21 views
1

私はsmackライブラリを使用して私のアンドロイドアプリを通じてopenfireサーバーに接続しようとしています。私は、サーバーに接続していたときに、それは私を与え、xmppに接続するとソケット例外(許可が拒否されました)が返されます

次のアドレスのエラーに失敗しました:java.net.SocketExceptionがあるため「192.168.0.31:5222」は失敗しました:ソケットは失敗しました:EACCES(パーミッション拒否)

をしかし、私は自分のマニフェストにインターネットの許可を与えました。

私が使用しているコードがある..私はsmackConnection.init(ユーザー、パスワード)を呼び出しています私のログイン活動から

public void init(String mUsername, String mPassword) { 


    Log.i(TAG, "connect()"); 
    config = XMPPTCPConnectionConfiguration.builder(); 
    config.setServiceName(mServiceName); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setHost(mServiceName); 
    config.setPort(5222); 
    config.setDebuggerEnabled(true); 
    config.setResource("sender"); 
    // config.setCompressionEnabled(true); 
    config.setUsernameAndPassword(mUsername, mPassword); 
    XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true); 
    XMPPTCPConnection.setUseStreamManagementDefault(true); 


    mConnection = new XMPPTCPConnection(config.build()); 
    mConnection.addConnectionListener(this); 
    ChatManager.getInstanceFor(mConnection).addChatListener(this); 


    gson = new Gson(); 
    connectAndLoginAnonymously(); 
} 

public void connectAndLoginAnonymously() { 
    mRegisterTask = new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected Void doInBackground(Void... params) { 
      try { 
       mConnection.connect(); 
       DeliveryReceiptManager dm = DeliveryReceiptManager 
         .getInstanceFor(mConnection); 
       dm.setAutoReceiptMode(DeliveryReceiptManager.AutoReceiptMode.always); 
       dm.addReceiptReceivedListener(new ReceiptReceivedListener() { 

        @Override 
        public void onReceiptReceived(final String fromid, 
                final String toid, final String msgid, 
                final Stanza packet) { 

        } 
       }); 
       mConnection.login(); 
      } catch (SmackException | XMPPException | IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void res) { 
     } 
    }; 

    // execute AsyncTask 
    mRegisterTask.execute(); 
} 




public void disconnect() { 
    Log.i(TAG, "disconnect()"); 
    if (mConnection != null) { 
     mConnection.disconnect(); 
    } 
} 

//For Creating new User. 
public boolean createNewAccount(String username, String newpassword) { 
    boolean status = false; 
    if (mConnection == null) { 
     try { 
      mConnection.connect(); 
     } catch (SmackException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (XMPPException e) { 
      e.printStackTrace(); 
     } 
    } 

    try { 
    // String newusername = username + mConnection.getServiceName(); 
     Log.i("service", mConnection.getServiceName()); 
     AccountManager accountManager = AccountManager.getInstance(mConnection); 
     accountManager.createAccount(username, newpassword); 
     status = true; 
    } catch (SmackException.NoResponseException e) { 
     status = false; 
     e.printStackTrace(); 
    } catch (XMPPException.XMPPErrorException e) { 
     e.printStackTrace(); 
     status = false; 
    } catch (SmackException.NotConnectedException e) { 
     e.printStackTrace(); 
     status = false; 
    } 
    mConnection.disconnect(); 
    return status; 

} 

java.net.SocketExceptionのアクセス許可が拒否されましたというエラーが表示されます。

エラーログは次のとおりです。

04-05 18:28:18.142 9575-9575/dhaval.com.chatdemo I/SMACK: connect() 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err: 

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '192.168.0.31:5222' failed because java.net.SocketException: socket failed: EACCES (Permission denied) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:605) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:839) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:365) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at dhaval.com.chatdemo.SmackConnection$1.doInBackground(SmackConnection.java:104) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at dhaval.com.chatdemo.SmackConnection$1.doInBackground(SmackConnection.java:100) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
04-05 18:28:18.152 9575-9604/dhaval.com.chatdemo W/System.err:  at java.lang.Thread.run(Thread.java:841) 

マニフェストコード:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="dhaval.com.chatdemo"> 

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".CreateAccountPage"></activity> 
</application> 

私はここで何も悪いことをやっていますか?どんな助けでも大変に感謝します。

+3

あなたのアプリケーションは、そのマニフェストで「INTERNET」に対して「uses-permission」を持っていますか? – laalto

+0

私は既に私が許可を与えたことを述べました。 – Newbiee

+0

誤字や誤った要素名がある場合は、マニフェストのその部分を投稿してください。 – laalto

答えて

1

うまくいけば、マニフェストにuses-permission INTERNETがありません。

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

このチュートリアルを使用して固執したときにうまくいったhttp://shubhank101.github.io/iOSAndroidChaosOverFlow/2016/10/Chat-Application-Using-XMPP-Smack-API-Android-Tutorial – kiwicomb123

関連する問題