Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cancel notification with remoteInput not working

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:

notification

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:

enter image description here

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

update: same results even there is a tag with notification

like image 941
Rahul Tiwari Avatar asked Oct 17 '22 08:10

Rahul Tiwari


1 Answers

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)
}
like image 50
Alessio Avatar answered Oct 21 '22 08:10

Alessio