Autore Topic: Easy Facebook Android- problema NetworkOnMainThreadException  (Letto 1803 volte)

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Easy Facebook Android- problema NetworkOnMainThreadException
« il: 24 Giugno 2013, 22:58:24 CEST »
0
Salve, ho un problema che mi sta letteralmente facendo impazzire, ho scaricato EasyFacebookAndroid, per integrare facebook nella mia app, per semplificare le cose sto cercando di modificare un esempio, ma non riesco proprio a trovare cosa inserire nella AsyncTask in modo da non far crashare tutto, questa è la mia classe che uso per la connessione e l'invio dei dati sul mio profilo facebook


Codice (Java): [Seleziona]
package facebook;

import com.easy.facebook.android.apicall.GraphApi;
import com.easy.facebook.android.data.User;
import com.easy.facebook.android.error.EasyFacebookError;
import com.easy.facebook.android.facebook.FBLoginManager;
import com.easy.facebook.android.facebook.Facebook;
import com.easy.facebook.android.facebook.LoginListener;
import com.example.tecnoandroid.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;

public class KodeFunFBAppActivity extends Activity implements LoginListener {
        /** Called when the activity is first created. */

        private FBLoginManager fbLoginManager;

        //replace it with your own Facebook App ID
        public final String KODEFUNFBAPP_ID = "*********517";

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                //setContentView(R.layout.main);
                connectToFacebook();
        }

        public void connectToFacebook(){
               
               
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
               
                //read about Facebook Permissions here:
                //http://developers.facebook.com/docs/reference/api/permissions/
                String permissions[] = {
                                "user_about_me",
                                "user_activities",
                                "user_birthday",
                                "user_checkins",
                                "user_education_history",
                                "user_events",
                                "user_groups",
                                "user_hometown",
                                "user_interests",
                                "user_likes",
                                "user_location",
                                "user_notes",
                                "user_online_presence",
                                "user_photo_video_tags",
                                "user_photos",
                                "user_relationships",
                                "user_relationship_details",
                                "user_religion_politics",
                                "user_status",
                                "user_videos",
                                "user_website",
                                "user_work_history",
                                "email",

                                "read_friendlists",
                                "read_insights",
                                "read_mailbox",
                                "read_requests",
                                "read_stream",
                                "xmpp_login",
                                "ads_management",
                                "create_event",
                                "manage_friendlists",
                                "manage_notifications",
                                "offline_access",
                                "publish_checkins",
                                "publish_stream",
                                "rsvp_event",
                                "sms",
                                //"publish_actions",

                                "manage_pages"

                };

                fbLoginManager = new FBLoginManager(this,
                                R.layout.activity_anteprima,
                                KODEFUNFBAPP_ID,
                                permissions);

                if(fbLoginManager.existsSavedFacebook()){
                        fbLoginManager.loadFacebook();
                }
                else{
                        fbLoginManager.login();
                }
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data){
                if(data!=null)
                        fbLoginManager.loginSuccess(data);
                else
                        finish();
        }

        public void loginSuccess(Facebook facebook) {
                GraphApi graphApi = new GraphApi(facebook);

                User user = new User();

                try{
                        user = graphApi.getMyAccountInfo();

                        Intent i=getIntent();
                       
                        graphApi.setStatus(
                                        i.getStringExtra("messaggio"),
                                        i.getStringExtra("foto"),
                                        i.getStringExtra("url"),
                                        i.getStringExtra("name"),
                                        i.getStringExtra("url"),
                                        i.getStringExtra("name")
                                        );
                       
                } catch(EasyFacebookError e){
                        Log.d("TAG: ", e.toString());
                }

                fbLoginManager.displayToast("Hey, " + user.getFirst_name() + "! Login success!");
                finish();
        }

        public void logoutSuccess() {
                fbLoginManager.displayToast("Logout Success!");
                finish();
        }

        public void loginFail() {
                fbLoginManager.displayToast("Login Failed!");
                finish();
        }
       
        private String url;
}

quello che mi chiedo è, come devo strutturare la AsyncTask in modo da non far crashare tutto?  :-(

p.s.
gli id e gli hash sono settati correttamente in quanto su vecchie versioni di android funziona a meraviglia!
« Ultima modifica: 24 Giugno 2013, 23:37:06 CEST da eni992 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #1 il: 25 Giugno 2013, 07:55:54 CEST »
0
LogCat ?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #2 il: 25 Giugno 2013, 08:45:40 CEST »
0
allora non sono solo io a non riuscire a far funzionare questa "semplice" libreria

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #3 il: 25 Giugno 2013, 09:16:01 CEST »
0
connectToFacebook()
e i relativi metodi vanno messi in un asynctask.

e questo:
Codice (Java): [Seleziona]
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
NON DEVE ESISTERE!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #4 il: 25 Giugno 2013, 11:02:57 CEST »
0

LogCat ?
non credo ci sia bisogno di logcat, l'eccezione è quella, è l'unica che mi da, sotto vecchi android funziona alla perfezione, sui nuovi no...

allora non sono solo io a non riuscire a far funzionare questa "semplice" libreria
direi xD e su internet non si trova nemmeno una mezza guida...


connectToFacebook()
e i relativi metodi vanno messi in un asynctask.

e questo:
Codice (Java): [Seleziona]
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
NON DEVE ESISTERE!
lo so che non deve esistere, sapresti implementarmela tu in AsyncTask? Non saprei proprio come implementare sta libreria in una AsyncTask... sono metodi che si richiamano tra di loro ad ogni Evento...quelle due righe le ho messe per disperazione...e lo stesso non funzionano...
« Ultima modifica: 25 Giugno 2013, 11:06:26 CEST da eni992 »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #5 il: 25 Giugno 2013, 11:11:16 CEST »
0
domanda, ma sai cos'è un asynctask, come si usa e a cosa serve?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #6 il: 25 Giugno 2013, 11:14:53 CEST »
0
non credo ci sia bisogno di logcat, l'eccezione è quella, è l'unica che mi da, sotto vecchi android funziona alla perfezione, sui nuovi no...

Beh, può anche darsi non ce ne sia bisogno, ma sei tu che hai chiesto aiuto, e chi vuole aiutarti vuole vedere il LogCat.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #7 il: 25 Giugno 2013, 11:16:12 CEST »
0
domanda, ma sai cos'è un asynctask, come si usa e a cosa serve?

so cosa è e come si usa, e l'ho usato svariate volte... infatti per il resto della app ho usato solo quello anche per il caricamento di dati in modo da farlo asincrono e velocizzare la app...

ma qui sul serio non saprei applicarlo...  :-X


Beh, può anche darsi non ce ne sia bisogno, ma sei tu che hai chiesto aiuto, e chi vuole aiutarti vuole vedere il LogCat.


NetwordOnThreadMainException() generato da questa classe e propagato a tutta la activity...

fine del logcat che serve... nessun'altro errore eccetto la propagazione dell'eccezione a tutta la activity...se la faccio partire con 2.2 o 2.3 partono solo i log di sistema...




Mi servirebbe come strutturare questa classe in una AsyncTask in modo da non farla crashare... perché se si trattava di una semplice chiamata a funzione...o di qualsiasi altra cosa sapevo farla...io qui non ci sto capendo nulla però  :-(
« Ultima modifica: 25 Giugno 2013, 11:40:34 CEST da eni992 »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #8 il: 25 Giugno 2013, 12:24:51 CEST »
0
io ti ho scritto:
connectToFacebook()
e i relativi metodi vanno messi in un asynctask.

hai provato?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #9 il: 25 Giugno 2013, 12:32:35 CEST »
0
io ti ho scritto:
hai provato?

è stata la prima cosa che ho provato a fare... ma potrei aver capito male o sbagliato in qualcosa...fa vede tu cosa intendi...

io ho messo la connectToFacebook nel doInBackGround()...il resto nella asynctask come metodi per l'interfaccia...non andava..

inoltre...l'onActivityResult...dove lo piazzo se è un metodo di "activity"?



EDIT:

ho fatto così...dimmi se è questo che tu intendi:

Codice (Java): [Seleziona]
package facebook;

import com.easy.facebook.android.apicall.GraphApi;
import com.easy.facebook.android.data.User;
import com.easy.facebook.android.error.EasyFacebookError;
import com.easy.facebook.android.facebook.FBLoginManager;
import com.easy.facebook.android.facebook.Facebook;
import com.easy.facebook.android.facebook.LoginListener;
import com.example.tecnoandroid.R;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;

public class KodeFunFBAppActivity extends Activity implements LoginListener {
        /** Called when the activity is first created. */

       
        /*
         *
         *
         *
         *
         *
         * mettere ogni chiamata a faceook in una asinctask separata!
         *
         *
         *
         *
         */

        private FBLoginManager fbLoginManager;

        //replace it with your own Facebook App ID
        public final String KODEFUNFBAPP_ID = "*********517";

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
                //setContentView(R.layout.main);
                new Connect().execute();
        }
/*
        public void connectToFacebook(){
               
               
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
               
               
        }*/


        @Override
        protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data){
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
                if(data!=null)
                        fbLoginManager.loginSuccess(data);
                else
                        finish();
        }

        public void loginSuccess(Facebook facebook) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
                GraphApi graphApi = new GraphApi(facebook);

                User user = new User();

                try{
                        user = graphApi.getMyAccountInfo();

                        Intent i=getIntent();
                       
                        graphApi.setStatus(
                                        i.getStringExtra("messaggio"),
                                        i.getStringExtra("foto"),
                                        i.getStringExtra("url"),
                                        i.getStringExtra("name"),
                                        i.getStringExtra("url"),
                                        i.getStringExtra("name")
                                        );
                       
                } catch(EasyFacebookError e){
                        Log.d("TAG: ", e.toString());
                }

                fbLoginManager.displayToast("Hey, " + user.getFirst_name() + "! Login success!");
                finish();
        }

        public void logoutSuccess() {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
                fbLoginManager.displayToast("Logout Success!");
                finish();
        }

        public void loginFail() {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
                fbLoginManager.displayToast("Login Failed!");
                finish();
        }
       
       
        class Connect extends AsyncTask{

                @Override
                protected Object doInBackground(Object... arg0) {
                        //read about Facebook Permissions here:
                        //http://developers.facebook.com/docs/reference/api/permissions/
                        String permissions[] = {
                                        "user_about_me",
                                        "user_activities",
                                        "user_birthday",
                                        "user_checkins",
                                        "user_education_history",
                                        "user_events",
                                        "user_groups",
                                        "user_hometown",
                                        "user_interests",
                                        "user_likes",
                                        "user_location",
                                        "user_notes",
                                        "user_online_presence",
                                        "user_photo_video_tags",
                                        "user_photos",
                                        "user_relationships",
                                        "user_relationship_details",
                                        "user_religion_politics",
                                        "user_status",
                                        "user_videos",
                                        "user_website",
                                        "user_work_history",
                                        "email",

                                        "read_friendlists",
                                        "read_insights",
                                        "read_mailbox",
                                        "read_requests",
                                        "read_stream",
                                        "xmpp_login",
                                        "ads_management",
                                        "create_event",
                                        "manage_friendlists",
                                        "manage_notifications",
                                        "offline_access",
                                        "publish_checkins",
                                        "publish_stream",
                                        "rsvp_event",
                                        "sms",
                                        //"publish_actions",

                                        "manage_pages"

                        };

                        fbLoginManager = new FBLoginManager(KodeFunFBAppActivity.this,
                                        R.layout.activity_anteprima,
                                        KODEFUNFBAPP_ID,
                                        permissions);

                        if(fbLoginManager.existsSavedFacebook()){
                                fbLoginManager.loadFacebook();
                        }
                        else{
                                fbLoginManager.login();
                        }
                       
                       
                        return null;
                }
               
        }
        private String url;
}
« Ultima modifica: 25 Giugno 2013, 12:38:52 CEST da eni992 »

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #10 il: 25 Giugno 2013, 13:08:28 CEST »
0
Mah, forse non ho capito nulla di questo topic... ma facendo il cut & paste del tuo codice iniziale, senza ricorrere a nessun asynctask e su un dispositivo 4.1.2, a me non lancia nessuna eccezione di sorta...

L'unica cosa che mi viene da dire è: stai usando l'ultima versione disponibile di Easy Facebook Android (2.3 rilasciata il 06/11/2011)?

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #11 il: 25 Giugno 2013, 13:17:25 CEST »
0
Mah, forse non ho capito nulla di questo topic... ma facendo il cut & paste del tuo codice iniziale, senza ricorrere a nessun asynctask e su un dispositivo 4.1.2, a me non lancia nessuna eccezione di sorta...

L'unica cosa che mi viene da dire è: stai usando l'ultima versione disponibile di Easy Facebook Android (2.3 rilasciata il 06/11/2011)?


sto usando la 2.3 ma non so quale rilascio sia...magari passami quella che usi tu, forse il mio è un rilascio più vecchio  e ha problemi... ma l'ho provato un casino di volte e non va se la versione è oltre la gingerbread...ho provato su 4.0, 4.1.2, 4.2.2 ecc, sui dispositivi tra i più disparati...
« Ultima modifica: 25 Giugno 2013, 13:19:55 CEST da eni992 »

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #12 il: 25 Giugno 2013, 13:37:03 CEST »
0
Mi sono limitato a scaricare l'ultima disponibile attualmente sul sito.
Può essere che mi mancano dei pezzi del tuo codice (tipo il layout, ma non credo faccia una grande differenza), per cui il problema non mi si presenta; ma facendo una prova veramente veloce mi si apre la schermata di login a fb (dove ovviamente mi dice che APP_ID non esiste, ma di fatto la schermata si apre).
Provato su un Xperia Z come detto con 4.1.2, ma non credo che il dispositivo faccia qualche differenza in questi casi.
Non so che dirti.

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #13 il: 25 Giugno 2013, 14:32:16 CEST »
0
Mi sono limitato a scaricare l'ultima disponibile attualmente sul sito.
Può essere che mi mancano dei pezzi del tuo codice (tipo il layout, ma non credo faccia una grande differenza), per cui il problema non mi si presenta; ma facendo una prova veramente veloce mi si apre la schermata di login a fb (dove ovviamente mi dice che APP_ID non esiste, ma di fatto la schermata si apre).
Provato su un Xperia Z come detto con 4.1.2, ma non credo che il dispositivo faccia qualche differenza in questi casi.
Non so che dirti.

ovvio che non esiste l'ho modificato per motivi di sicurezza altrimenti chiunque avrebbe potuto usare la chiave di debug e mandare a quel paese la mia app XD

cmq... passa il tuo... forse è proprio li mio il problema...


Post unito: 25 Giugno 2013, 20:29:03 CEST
ho provato con un'altro cellulare ed è andato... ma sta di fatto che sul90% dei dispositivi crasha con quella eccezione...

casomai sapete consigliarmi sdk per login e post di stati? (che non siano quelle date da facebook, deve essere leggera e semplice da usare)
« Ultima modifica: 25 Giugno 2013, 20:29:03 CEST da eni992, Reason: Merged DoublePost »

Offline eni992

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
Re:Easy Facebook Android- problema NetworkOnMainThreadException
« Risposta #14 il: 27 Giugno 2013, 21:32:14 CEST »
0
up  :-(