Je crée une notification en utilisant le code suivant (Kotlin)Remplacer extras intention
val builder = NotificationCompat.Builder(ctx)
........
.setContentIntent(PendingIntent.getActivity(ctx, 891, ctx.newIntent<MainActivity>()
.putExtra("id", member.id)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), 0))
Ainsi, lorsque la notification est taraudée MainActivity
choisira l'utilisateur, à partir de laquelle la notification est arrivé.
override fun onNewIntent(intent: Intent?) {
val id = intent?.getStringExtra("id") ?: return
selectUser(extra)
}
J'envoie 2 notifications de 2 utilisateurs différents. Après avoir cliqué sur la première notification, cela fonctionne correctement (id == _ User1UUID) et sélectionne l'utilisateur. Ensuite, je repasse, envoie une autre notification du deuxième utilisateur, tape dessus et l'intention contient toujours l'identifiant utilisateur précédent et le sélectionne (vérifié par le point d'arrêt). Je sais, c'est parce que FLAG_ACTIVITY_REORDER_TO_FRONT
, mais je ne dois conserver qu'une seule instance de MainActivity
.
Put 'android: launchMode = "singleTask"' attribut de l'activité dans le fichier AndroidManifest. –
Pour plus d'informations - [link] https://developer.android.com/guide/components/activities/tasks-and-back-stack.html –
@ keyur9779 Je l'ai déjà dans le manifeste, mais ce n'est pas ce drapeau nécessaire aussi? –