1

Я несколько раз ломаю голову с этим в течение нескольких дней, поэтому я надеюсь, что кто-то может указать, что я делаю неправильно. Я создаю намерение с 5 строковыми дополнениями и устанавливаю его в PendingIntent для использования с AlarmManager. Однако, когда тревога срабатывает, и я продолжаю обрабатывать намерение внутри onHandleIntent моего класса обслуживания, в Intent есть только 3 дополнения. Некоторый код & скриншоты ниже.Намерения отсутствуют только некоторые дополнительные функции в IntentService

Намерение создания:

Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION"); 
     ; 
     notificationIntent.addCategory("android.intent.category.DEFAULT"); 
     notificationIntent.putExtra("key1", "val5"); 
     notificationIntent.putExtra("key2", "val4"); 
     notificationIntent.putExtra("key3", "val3"); 
     notificationIntent.putExtra("key4", "val4"); 
     notificationIntent.putExtra("key5", "val5"); 
     return notificationIntent; 

В ожидании Намерение создания:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getActivity(), Integer.parseInt(obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

Внутри Намерение службы:

protected void onHandleIntent(Intent intent) { 

     if(intent != null) { 

      if (intent.getExtras() != null) { 

      String val1 = intent.getStringExtra("key1"); 
      String val2 = intent.getStringExtra("key2"); 
      String val3 = intent.getStringExtra("key3"); 
      String val4 = intent.getStringExtra("key4"); 
      String val5 = intent.getStringExtra("key5"); 

      // proceed with other stuff.. 

     } 
    } 
} 

на основе какой-либо другой ответ на вопросы, похожие на мои, у меня также пытался:

final Intent originalIntent = (Intent)intent.getExtras().get(Intent.EXTRA_INTENT); 
final String val1 = originalIntent.getStringExtra("key1"); 

Но originalIntent всегда имеет значение null. Я не могу понять, почему доступны только 3 из дополнительных функций, а остальные 2 - нет. Они все строковые значения, так что дискриминация вне моего понимания :(

Debugger скриншоты: Когда цель создания - enter image description here

Когда цель чтения в намерениях класса обслуживания - enter image description here

I также попытался сделать intent.setAction("",Math.random()); как предложено в некоторых ответах на SO, но это привело к тому, что сигнал тревоги не запускался вообще. Любая помощь с благодарностью.

+0

Что делать, если вы изменили это на PendingIntent pendingIntent = PendingIntent.getActivity (это Integer.parseInt (obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); ' ? –

+0

@ShreeKrishna: выполнение getActivity приводит к тому, что будильник не запускается вообще – akdsouza

+0

Какова ценность 'obj.uniqueId'? это действительно уникально или всегда одно и то же? – pskink

ответ

1

Вы добавили свои «дополнительные» в эфир Intent, а затем заявляете, что в вашем Service вышли только 3 из 5. Как насчет просмотра кода, который извлекает «дополнительные» из трансляции Intent в onReceive() и копирует их в Intent, который вы используете для звонка startService(). Я думаю, что вы обнаружите, что ваша проблема находится прямо там :-)

 Смежные вопросы

  • Нет связанных вопросов^_^