Am făcut acest lucru cât de simplu pot în cod. Eu folosesc biblioteca asmack pentru Android în versiunea 8-0.8.3.
Nu îngheață cererea mea și mă provoacă și erori. nu există permisiune DNS activă. Nu este nimic online despre asta.
Chiar sper să primesc niște ajutor sau sfaturi.
De asemenea, am încercat acest lucru:
string final static final server_host = "jabber.org"; statică finală privată INT SERVER_PORT = 5222;
void publice xmppService () aruncă XMPPException
Folosind biblioteca după gust, în loc de asmack, mă face aceeași problemă. Nu primesc jurnalul de erori, dar după dezactivarea programului de depanare, obțin:
Top 5 răspunsuri
Vă recomandăm să utilizați Smack în loc de aSmack. Asmack este patch-uri și versiunea îmbunătățită a lui Smack și aSmack sunt oarecum moarte. Se va face refactorizarea codului smack, vor fi adăugate câteva metode noi și vor fi refactorizabile clasele DNS.
UPDATE Când văd logoul meu de eroare, se pare că este vorba de un apel de rețea pe firul principal al interfeței de utilizator
Cum de a rezolva excepția NetworkOnMainThread? Folosind AsyncTask, care face apel la rețea pe un alt fir (în fundal), și nu pe firul principal al aplicației.
Plasați cursorul codul pentru AsynTask. -
Și acum puteți rula AsyncTask-ul. -
Cu aceasta, apelul de rețea va fi executat în fundal într-un alt fir.
Din README
Pentru a putea funcționa corect pe Android, trebuie să vă înregistrați clap Providers extensii XMPP și moduri manuale și unele blocuri de cod statice înainte de a face orice activty XMPP. SmackAndroid.init (Context) vocație (în org.jivesoftware.smack) va face pentru tine.
Doar apelați SmackAndroid.init (Context). și ești în regulă.
Acest lucru funcționează pentru mine: