Question

Je crée une notification avec quelque chose de semblable à ce qui suit:

    Intent ni = new Intent(this, SomeActivity.class);
    ni.putExtra("somestring", "somedata");
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, ni, 
                PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT);
    Context context = getApplicationContext();

    notification.setLatestEventInfo(context, 
            res.getString(R.string.app_name), 
            text, contentIntent);

La clé est ici les données supplémentaires sur l'intention de la notification. Une fois que je clique sur la notification et soulève SomeActivity, il évoque l'activité et les données supplémentaires seront disponibles.

Cependant, si je quitte l'application, maintenez le bouton d'accueil jusqu'à ce que la liste des activités récentes arrive, et choisir d'ouvrir à nouveau l'application, les données supplémentaires sont encore passé. Est-il possible que je puisse faire de ces données se passe que si l'application est ouverte par la notification, et non dans la liste des récentes activités?

Était-ce utile?

La solution

On dirait que je peux vérifier si l'activité a été lancée à partir des activités récentes de dialogue avec ceci:

if((getIntent().getFlags() & 
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // ignore extras
}
else {
    // do not ignore extras
}

Je ne sais pas si cela est la meilleure façon, mais il fonctionne.

Autres conseils

Utilisez un autre Intent. Par exemple, vous pouvez ajouter un <intent-filter> pour une chaîne d'action personnalisée, et l'utiliser pour votre base Notification PendingIntent. En d'autres termes, vous ne pouvez pas changer la boîte de dialogue les plus récentes activités, mais vous pouvez changer votre côté du conflit.

Essayez avec:

int NOTIFICATION_CODE = 1;

PendingIntent contentIntent = 
          PendingIntent.getActivity(this, 
                                    NOTIFICATION_CODE, 
                                    ni,
                                    PendingIntent.FLAG_UPDATE_CURRENT | 
                                    PendingIntent.FLAG_ONE_SHOT
                                   );

Modifier la valeur notification_code pour chaque notification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top