cancel notification with remoteInput not working

六月ゝ 毕业季﹏ 提交于 2019-12-10 17:46:58

问题


I am showing a notification with RemoteInput like this:

   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());

output:

after clicking on add note, entering text and submitting it I try to cancel notification like this:

notificationManager.cancel(123456);

which does not cancel notification but just dismiss the input field with text appended below my notification like this:

why does this not cancel the notification? and how to cancel it.

update: same results even there is a tag with notification


回答1:


Try setting a tag to your notification and then provide that tag while you perform cancel as following:

While creating(Replace my_tag with your preferred unique tag):

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

While canceling:

notificationManager.cancel("my_tag",123456);



回答2:


After a while, I found a workaround, definitely not the most elegant solution. Issue happens for me on Android 9, whereas the notification with remote input is made undismissable by the system. The workaround is, after the user enters the text and clicks, and we need to update the notification UI, to use setTimeoutAfter(); even with values as low as 1 millisecond, the notification is removed after few seconds, so the solution is not the best.

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)
}


来源:https://stackoverflow.com/questions/54219914/cancel-notification-with-remoteinput-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!