Je me suis cassé la tête avec ceci pendant quelques jours ainsi j'espère que quelqu'un peut indiquer ce que je fais mal. Je crée une intention avec 5 extras de chaîne et la définissant à un PendingIntent à utiliser avec AlarmManager. Cependant, lorsque l'alarme se déclenche et que je continue à gérer l'intention dans onHandleIntent de ma classe de service, il n'y a que 3 extras dans l'intention. Certains codes & captures d'écran ci-dessous.Intention manquant seulement quelques extras dans IntentService
création Intention:
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;
En attendant la création Intention:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getActivity(), Integer.parseInt(obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Service intention Intérieur:
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..
}
}
}
Sur la base d'une autre réponse de questions similaires à la mienne, je l'ai aussi essayé:
final Intent originalIntent = (Intent)intent.getExtras().get(Intent.EXTRA_INTENT);
final String val1 = originalIntent.getStringExtra("key1");
Mais originalIntent est toujours null. Je n'arrive pas à comprendre pourquoi seulement 3 des extras sont disponibles et les 2 autres ne le sont pas. Ils sont toutes les valeurs de chaîne de sorte que la discrimination est au-delà de ma compréhension :(
screenshots Débogueur: Quand l'intention est créé -
Quand l'intention est lu dans la classe de service intention -
J'ai aussi essayé de faire intent.setAction("",Math.random());
comme suggéré dans certaines réponses sur SO mais cela a entraîné l'alarme ne se déclenche pas du tout Toute aide est grandement appréciée
Et si vous changez cela en PendingIntent pendingIntent = PendingIntent.getActivity (ceci, Integer.parseInt (obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); ' ? –
@ShreeKrishna: faire getActivity entraîne une alarme qui ne se déclenche pas du tout – akdsouza
quelle est la valeur de 'obj.uniqueId'? est-ce vraiment unique ou toujours pareil? – pskink