2013-06-09 15 views
8

Seguito con precisione Google's GCM example ma con errori frustranti. Non ho trovato la risposta qui, quindi ho pensato di documentarlo per riferimenti futuri.Il metodo di registrazione di Google Cloud Messaging non funziona con IOException (MAIN_THREAD)

Ero abbastanza sicuro di avere il manifest impostato correttamente con le autorizzazioni corrette ecc. (Seguendo l'esempio precedente alla lettera) ... ma questo codice ha sempre causato una IOException con la spiegazione "MAIN_THREAD".

String regid = ""; 
try { 
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext()); 
    String sender_id = getResources().getString(R.string.GCM_sender_id); 
    regid = gcm.register(sender_id); 
    Log.d(TAG, "Device registered, registration id=" + regid); 
} 
catch (IOException ex) { 
    Log.e(TAG, "Device registration failed", ex); 
} 

stavo cercando di trovare il problema facendo un passo attraverso, così naturalmente eseguito questo codice sul thread principale. A posteriori, la risposta è ovvia ... ma la inserirò qui sotto.

risposta

12

Rullo di tamburi ... non è possibile chiamare il metodo di registrazione sul thread principale. Ovvio, a posteriori, ma forse ce ne sono altri che succhiano come tanto quanto me

+4

gcm.register (SENDER_ID) (ma meno ogni giorno!); in doInBackground ma non è ancora possibile registrare l'app e lanciare IOException –

1

chiamata al metodo registro nel AsyncTask (doInBackGround)

Problemi correlati