¿Cómo podría Intent ser nulo en onHandleIntent ()?

Mi aplicación Android se bloquea y este es el logcat:

java.lang.NullPointerException at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:194) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.os.HandlerThread.run(HandlerThread.java:60) 

Miré en la fuente androide de gcm r3 y encontré que la intención del argumento es null en onHandleIntent ().

¿Es esto posible? ¿Como arreglarlo?

(Se que se puede ver la intención nula con Service.onStartCopmmand devolver START_STICKY pero IntentService.onStartCommand no utiliza START_STICKY .)

One Solution collect form web for “¿Cómo podría Intent ser nulo en onHandleIntent ()?”

Creo que la aplicación se bloquea sólo en algunos dispositivos durante el tiempo de instalación. Es porque durante la instalación el servicio de GCM también recibe algún Intent de otra fuente de Google y su receptor de difusión no está preparado para manejar este tipo de Intent .

Si sólo desea recibir el GCM Intent que desea extraer del servidor mediante notificación push, utilice esto en su llamada de llamada de intención.

 protected void onHandleIntent(Intent intent) { Bundle extras = intent.getExtras(); //String msg = intent.getStringExtra("message"); String from=extras.getString("from"); GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); String messageType = gcm.getMessageType(intent); if (!extras.isEmpty()) { if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { sendErrorNotification("Send error: " + extras.toString()); } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { sendErrorNotification("Deleted messages on server: " + extras.toString()); // If it's a regular GCM message, do some work. } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) { // This loop represents the service doing some work. for (int i = 0; i < 5; i++) { Log.i(TAG, "Working... " + (i + 1) + "/5 @ " + SystemClock.elapsedRealtime()); try { Thread.sleep(500); } catch (InterruptedException e) { } } Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime()); // Post notification of received message. // sendNotification("Received: " + extras.toString()); /*********ERROR IN SOME DEVICES*****************/ if(from.equals("google.com/iid")) { //related to google ... DO NOT PERFORM ANY ACTION } else { //HANDLE THE RECEIVED NOTIFICATION String msg = intent.getStringExtra("message"); sendNotification(msg); Log.i(TAG, "Received: " + extras.toString()); } /**************************/ } } GcmBroadcastReceiver.completeWakefulIntent(intent); } 
  • ¿Puedo usar el servicio técnico con socket-io?
  • ¿Puedes configurar GCM en el servidor de Windows?
  • GCM duplicó mensajes
  • Por qué PLAY_SERVICES_RESOLUTION_REQUEST es 9000
  • Android SDK obtiene un error NotRegistered de GCM después de unas horas
  • GcmBroadcastReceiver no se dispara en Android 4.0.3
  • C2DM a Google Cloud Messaging (GCM)
  • La importación com.google.android.gms.gcm.GoogleCloudMessaging no se puede resolver
  • GCM: por qué mi aplicación se bloquea en GCMRegistrar.checkDevice (this);
  • Recepción del mensaje recibido Acknwoledgement From GCM Service
  • GCM elimina el ID de registro antiguo si el usuario instala la aplicación de nuevo inmediatamente después de la desinstalación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.