3
votes

annuler la notification avec remoteInput ne fonctionne pas

J'affiche une notification avec RemoteInput comme ceci:

notificationManager.cancel(123456);

sortie:

 notification

après avoir cliqué sur ajouter une note, saisi du texte et l'avoir soumis, j'essaye d'annuler la notification comme ceci:

   RemoteInput remoteInput = new RemoteInput.Builder("key_add_note")
                .setLabel("add note")
                .build();


        PendingIntent AddNotePendingIntent =
                PendingIntent.getBroadcast(getApplicationContext(),
                        (int) txn.get_id(),
                        new Intent(getApplicationContext(), AddNoteBroadcastReceiver.class)
                                .putExtra(Constants.IntentExtras.STA_TXN_ID, txn.get_id()),
                        PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Action action =
                new NotificationCompat.Action.Builder(R.drawable.ic_action_edit_dark,
                        "add note", AddNotePendingIntent)
                        .addRemoteInput(remoteInput)
                        .build();


        NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationUtil.MISC_CHANNEL_ID)
                .setContentTitle("TEST")
                .setContentText("add Note")
                .setSmallIcon(R.drawable.ic_action_edit_dark)
                .setAutoCancel(true)
                .addAction(action);

        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(123456, builder.build());

qui n'annule pas la notification mais rejette simplement l'entrée champ avec le texte ajouté sous ma notification comme ceci:

 entrez la description de l'image ici

pourquoi cela n'annule pas la notification? et comment l'annuler.

mise à jour: mêmes résultats même s'il y a une balise avec notification


4 commentaires

Veuillez me faire savoir si cette réponse particulière (à une question similaire) fonctionne: stackoverflow.com/a/20007350/2710385


@ dylan-myers Non, ce n'est pas le cas.


Avoir le même problème, également en utilisant des balises int personnalisées (pas 1). Avez-vous déjà résolu ce problème?


Je n'ai pas pu le résoudre en travaillant sur ce projet.


3 Réponses :


0
votes

Essayez de définir une balise pour votre notification, puis fournissez cette balise pendant que vous annulez comme suit:

Lors de la création (remplacez my_tag par votre balise unique préférée):

notificationManager.cancel("my_tag",123456);

Lors de l'annulation:

notificationManager.notify("my_tag",123456, builder.build());


1 commentaires

1
votes

Au bout d'un moment, j'ai trouvé une solution de contournement, certainement pas la solution la plus élégante. Le problème se produit pour moi sur Android 9, alors que la notification avec entrée à distance est rendue impossible par le système. La solution de contournement est, après que l'utilisateur entre le texte et clique, et nous devons mettre à jour l'interface utilisateur de notification , pour utiliser setTimeoutAfter () ; même avec des valeurs aussi basses que 1 milliseconde, la notification est supprimée après quelques secondes, donc la solution n'est pas la meilleure.

fun updateNotification(context: Context, id: Int) {
    val notification = NotificationCompat.Builder(context, MY_CHANNEL_ID)
        .setSmallIcon(android.R.drawable.ic_action_edit_dark)
        .setContentText(MY_TEXT)
        .setTimeoutAfter(1)
        .build()

    // show notification. This hides direct reply UI
    NotificationManagerCompat.from(context).notify(id, notification)
}


0 commentaires

0
votes

Lorsque je crée une notification avec la possibilité d'y répondre (comme dans exemple avec RemoteInput ) et que vous voulez le faire PAS REMPLACER avec une autre notification après la réponse:

notificationManager.cancel(tag, requestCode);

mais juste pour ANNULER juste après la réponse avec

Thread.sleep(2000) 

il ne disparaît pas du panneau de notification.

En savoir plus quand J'essaie de trouver une liste des notifications existantes APRÈS ci-dessus annuler avec

notificationManager.notify(tag, requestCode, notification);

cette notification (toujours pas disparu du panneau de notification) IS ABSENT int la liste !!

Ce bug apparaît uniquement à partir de l'API 29 et ne dépend pas de ma réponse depuis le panneau de notification ou de la notification "heads-up". p >

Pour contourner le problème, je dois remplacer une notification de réponse comme dans le manuel avec RemoteInput)

StatusBarNotification[] barNotifications = notificationManager.getActiveNotifications();

attendez quelques secondes

notificationManager.cancel(tag, requestCode);

et annulez-le après

notificationManager.notify(tag, requestCode, notification);


0 commentaires