De Notification, cliquez sur: activité déjà ouvert
J'ai une application avec les notifications qui ouvrent une certaine activité si je clique sur eux. Je veux que, si je clique sur la notification et de l'activité est déjà ouvert, il est pas a commencé à nouveau, mais juste mise à l'avant.
J'ai pensé que je pouvais le faire avec le drapeau FLAG_ACTIVITY_BROUGHT_TO_FRONT
ou FLAG_ACTIVITY_REORDER_TO_FRONT
, mais il n'arrête pas de l'ouvrir à nouveau et j'ai donc l'activité deux fois.
C'est mon code:
event_notification = new Notification(R.drawable.icon,
mContext.getString(R.string.event_notif_message), System.currentTimeMillis());
Intent notificationIntent = new Intent(mContext, EventListActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
sendNotification(event_notification, notificationIntent, mContext.getString(R.string.event_notif_title),
body, Utils.PA_NOTIFICATIONS_ID);
Puis-je gérer cela avec des drapeaux ou dois-je stocker une variable dans SharedPreferences pour vérifier si il est ouvert ou pas?
Merci!
- J'utilise intention.setFlags(Intention.FLAG_ACTIVITY_SINGLE_TOP|Intention.FLAG_ACTIVITY_NO_HISTORY );
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la
launchMode
attribut de laActivity
vous commencez àsingleTop
. Ce sera la cause entrant Intentions à être livrés à l'instance existante plutôt que de commencer une nouvelle instance lorsque queActivity
est déjà au sommet de la tâche de la pile.Ceci est fait dans le manifeste par l'ajout de
android:launchMode="singleTop"
à la<activity>
élément. Pour accéder à la dernière Intention (si vous êtes intéressé par un quelconque de données qui peuvent avoir passés avec elle), remplaceronNewIntent()
dans votreActivity
.Essayez de définir les indicateurs à
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
à la place.De la documentation pour FLAG_ACTIVITY_CLEAR_TOP (l'emphase est mienne):
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)
.Utilisation
onNewIntent()
pour le traitement de nouvelles données à partir de la notification et cliquez sur actualiser l'activité.Dans
onNewIntent
obtenir les données nouvelles de la nouvelle intention(qui a servi par la nouvelle notification) et les captures, par exemple:title = intent.getStringExtra("title")
dans
onCreate
précédemment 🙂Il va rafraîchir l'activité présente avec de nouvelles données de notification.
Vous pouvez également suivre ce tutoriel.
Il suffit de Copier le code et le coller dans le lanceur d'activité.
Ici est Originale Répondre
Je pense que vous devriez ajouter un peu de logique pour le faire fonctionner, peut-être que cela peut vous aider:
Par exemple, j'ai un Écran de démarrage (Lanceur et PRINCIPALE) de l'APPLICATION:
Et dans mon FirebaseService j'ai effectué les opérations suivantes: