2016-04-05 8 views
1

Ich versuche, eine Verbindung zu Openfire-Server über meine Android-App mit Smack-Bibliothek. wenn ich an den Server anschließe gibt es mir und Fehler vonVerbindung zu Xmpp gibt Socket-Ausnahme (Berechtigung verweigert)

Die folgenden Adressen nicht korrekt: '192.168.0.31:5222' ist fehlgeschlagen, weil java.net.SocketException: socket fehlgeschlagen: EACCES (Permission denied)

Jedoch habe ich eine Erlaubnis des Internets in meinem Manifest gegeben.

Der Code, den ich verwende, ist ..

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; 

} 

Von Anmeldungs ​​Aktivität, wenn ich smackConnection.init nenne (Benutzer, Passwort); es gibt mir den Fehler java.net.SocketException Berechtigung verweigert.

Das Fehlerprotokoll ist wie folgt.

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) 

Manifest Code:

<?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> 

bin ich hier etwas falsch gemacht? jede Hilfe würde sehr geschätzt werden.

+3

Hat Ihre App 'uses-permission' für' INTERNET' in ihrem Manifest? – laalto

+0

Ich habe bereits erwähnt, dass ich die Erlaubnis gegeben habe. – Newbiee

+0

Veröffentlichen Sie diesen Teil Ihres Manifests trotzdem, falls ein Tippfehler oder falscher Elementname vorliegt. – laalto

Antwort

1

Hoffentlich vermissen Sie Verwendungen-Erlaubnis INTERNET in Ihrem Manifest.

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

Arbeitete, als ich mit diesem Tutorial stecken blieb http://shubhank101.github.io/iOSAndroidChaosOverFlow/2016/10/Chat-Application-Using-XMPP-Smack-API-Android-Tutorial – kiwicomb123

Verwandte Themen