отменить уведомление, если удаленный вход не работает - PullRequest
0 голосов
/ 16 января 2019

Я показываю уведомление с RemoteInput, например:

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

Выход:

notification

после нажатия на добавление заметки, ввода текста и его отправки я пытаюсь отменить уведомление следующим образом:

notificationManager.cancel(123456);

, который не отменяет уведомление, а просто отклоняет поле ввода с текстом, добавленным под моим уведомлением, например:

enter image description here

почему это не отменяет уведомление? и как его отменить.

обновление: те же результаты, даже если есть тег с уведомлением

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Через некоторое время я нашел обходной путь, определенно не самое элегантное решение.Проблема возникает для меня на Android 9, тогда как уведомление с удаленным вводом делает систему неотразимой.Обходной путь - после того, как пользователь вводит текст и щелкает, и нам нужно обновить интерфейс уведомления , чтобы использовать setTimeoutAfter();даже если значения меньше 1 миллисекунды, уведомление удаляется через несколько секунд, поэтому решение не является лучшим.

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 голосов
/ 16 января 2019

Попробуйте установить тег в своем уведомлении, а затем укажите этот тег при выполнении отмены следующим образом:

При создании (замените my_tag предпочитаемым уникальным тегом):

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

При отмене:

notificationManager.cancel("my_tag",123456);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...