Autore Topic: Strano problema con xmpp (smack)  (Letto 703 volte)

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Strano problema con xmpp (smack)
« il: 04 Aprile 2012, 11:41:31 CEST »
0
Ciao Ragazzi!
Ho un problema con la libreria smack per il jabber!

Ho necessità di portare un'applicazione sviluppata su android 2.3.3 su honeycomb (3.2) per farla funzionare su un galaxy tab 7.0 plus.

L'applicazione all'avvio si connette ad un server jabber per poter inviare notifiche all'applicazione.
Su android 2.3.3 va alla grande, su honeycomb il sistema non fa neanche il login e crasha!

Ecco il logcat:

Off-Topic:
04-04 11:28:38.552: E/AndroidRuntime(8498): FATAL EXCEPTION: main
04-04 11:28:38.552: E/AndroidRuntime(8498): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {app.miaapp.com/app.miaapp.com.firstactivity}: android.os.NetworkOnMainThreadException
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2818)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:2861)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread.access$1000(ActivityThread.java:122)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.os.Looper.loop(Looper.java:132)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread.main(ActivityThread.java:4123)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at java.lang.reflect.Method.invokeNative(Native Method)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at java.lang.reflect.Method.invoke(Method.java:491)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at dalvik.system.NativeStart.main(Native Method)
04-04 11:28:38.552: E/AndroidRuntime(8498): Caused by: android.os.NetworkOnMainThreadException
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:368)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:208)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at java.net.Socket.connect(Socket.java:901)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at java.net.Socket.connect(Socket.java:844)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at org.jivesoftware.smack.proxy.DirectSocketFactory.createSocket(DirectSocketFactory.java:28)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:550)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:991)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at app.miaapp.com.MyService.register(MyService.java:285)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at app.miaapp.com.MyService.startCounter(MyService.java:210)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at app.miaapp.com.firstactivity.onActivityResult(firstactivity.java:671)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.Activity.dispatchActivityResult(Activity.java:4581)
04-04 11:28:38.552: E/AndroidRuntime(8498):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2814)
04-04 11:28:38.552: E/AndroidRuntime(8498):    ... 11 more


La riga 285 di MyService contiente questo:

Codice (Java): [Seleziona]
connection.connect();
ed è inserito in questo
Codice (Java): [Seleziona]
ConnectionConfiguration connConfig = new ConnectionConfiguration(host, port, service);
                connection = new XMPPConnection(connConfig);

                try {
                        connection.connect();
                        Log.i("XMPPClient","[SettingsDialog] Connected to " + connection.getHost());
                } catch (XMPPException ex) {
                        ex.printStackTrace();
                        Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());
                        Log.e("XMPPClient", ex.toString());
                        setConnection(null);
                }
                try {
                        connection.login(username, password);
                        Log.i("XMPPClient", "Logged in as " + connection.getUser());
                        Presence presence = new Presence(Presence.Type.available);
                        connection.sendPacket(presence);
                        setConnection(connection);
                } catch (XMPPException ex) {
                        Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);
                        Log.e("XMPPClient", ex.toString());
                        setConnection(null);
                }

da cosa può dipendere? confido nella vostra esperienza ;)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Strano problema con xmpp (smack)
« Risposta #1 il: 04 Aprile 2012, 11:47:19 CEST »
0
Devi fare le operazioni che richiedono l'accesso alla rete in un thread separato da quello della ui.
Dai un occhio alla classe AsyncTask ;)

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Strano problema con xmpp (smack)
« Risposta #2 il: 04 Aprile 2012, 17:09:14 CEST »
0
Perfetto!!
Semplice e conciso!
Ho risolto con un thread separato ed ha funzionato alla grande!
;)

P.s. per curiosità... come mai sul 2.3.3 funziona senza thread e su honeycomb lo necessita?