studio notificaciones how google gcm fcm change airport android google-cloud-messaging

android - notificaciones - ¿Cómo podría la intención ser nula en onHandleIntent()?



notificaciones push android google cloud messaging(gcm) (2)

Creo que la aplicación se bloquea solo en algunos dispositivos durante el tiempo de instalación. Esto se debe a que durante la instalación, el servicio GCM también recibe algunas Intent de otras fuentes de Google y su receptor de difusión no está preparado para manejar este tipo de Intent .

Si solo desea recibir GCM Intent que desea extraer del servidor a través de una notificación push, entonces use esto en su identificador de Intent Call.

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); }

Mi aplicación de Android falla y esta es la 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)

Busqué en la fuente de Android gcm r3 y encontré que la intención del argumento es nula en onHandleIntent ().

¿Es esto posible? ¿Como arreglarlo?

(Sé que se puede ver una intención nula con Service.onStartCopmmand devuelve START_STICKY pero IntentService.onStartCommand no usa START_STICKY ).