¿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); } 
  • Varios mensajes push: El contenido del adaptador ha cambiado pero ListView no ha recibido ninguna notificación
  • GCM 3.0 ¿Se necesita un token de registro actualizado?
  • ¿Cómo sé si mi mensaje de GCM es lo suficientemente pequeño (<4kb) para enviar? (Cómo obtener el tamaño de la cadena?)
  • Difundir una notificación a todos los dispositivos registrados
  • Creación de un servidor xmpp para google google anterior
  • Google Cloud Messaging - Dispositivo múltiple de varias cuentas
  • GCM y App Engine para aplicaciones de chat
  • GCM cómo anular el registro de un dispositivo con GCM y servidor de terceros
  • ¿Cómo puedo verificar la disponibilidad de API de Google Play Services? (Específicamente la API GCM)
  • Dirección IP del servidor de mensajería de Google Cloud
  • ¿Hay alguna manera de usar GCM en Android sin un servidor dedicado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.