Intereting Posts
Эмулятор Android: как узнать, используется ли функция виртуализации оборудования? Вызывается java.lang.NullPointerException: пытается вызвать виртуальный метод 'int android.graphics.Bitmap.getWidth ()' в ссылке на нулевой объект Высота веб-страниц растет неопределенно внутри nestedScrollView Android скачать pdf от url, затем открыть его с помощью PDF-ридера Использование Gson и Retrofit 2 для десериализации сложных ответов API Скрыть мягкую клавиатуру при нажатии клавиши возврата Adb over wifi убит после отключения usb? Как мне запустить событие, когда клик происходит за пределами диалогового окна Когда и как часто вызывается методPrepareOptionsMenu () для ActionBar? Создание и установка SSL-сертификатов Как обновить пункт меню, показанный в ActionBar? Как зарегистрировать учетную запись разработчика Android для компании? ArrayIndexOutOfBoundsException при отключении Snackbar / ViewDragHelper ErrnoException: isConnected failed: EHOSTUNREACH (без маршрута к хосту) при изменении сети Wi-Fi с использованием ICS Android-приложение в haskell

Как Intent может быть null в onHandleIntent ()?

Сбой приложения для Android и это ловушка: –

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) 

Я посмотрел в источник android gcm r3, и я обнаружил, что цель аргумента равна null в onHandleIntent ().

Возможно ли это? Как это исправить?

(Я знаю, что с помощью Service.onStartCopmmand возвращался START_STICKY но IntentService.onStartCommand не использует START_STICKY .

Solutions Collecting From Web of "Как Intent может быть null в onHandleIntent ()?"

Я думаю, что приложение врезается только на некоторых устройствах во время установки. Это связано с тем, что во время установки GCM-служба также получает некоторый Intent из другого источника Google, и ваш широковещательный приемник не готов обрабатывать этот тип Intent .

Если вы просто хотите получить GCM Intent, который хотите вытащить с сервера через push-уведомление, просто используйте это в своем вызове Intent.

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