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
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)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With