Я несколько раз ломаю голову с этим в течение нескольких дней, поэтому я надеюсь, что кто-то может указать, что я делаю неправильно. Я создаю намерение с 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 скриншоты: Когда цель создания -
Когда цель чтения в намерениях класса обслуживания -
I также попытался сделать intent.setAction("",Math.random());
как предложено в некоторых ответах на SO, но это привело к тому, что сигнал тревоги не запускался вообще. Любая помощь с благодарностью.
Что делать, если вы изменили это на PendingIntent pendingIntent = PendingIntent.getActivity (это Integer.parseInt (obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); ' ? –
@ShreeKrishna: выполнение getActivity приводит к тому, что будильник не запускается вообще – akdsouza
Какова ценность 'obj.uniqueId'? это действительно уникально или всегда одно и то же? – pskink