如何防止Android快速回复通知卡在加载中?

时间:2018-08-13 04:16:29

标签: android notifications android-7.0-nougat

我的应用使用Android N的新的快速回复功能来快速记录固定通知中的笔记,而无需用户打开活动。

但是,我希望在用户发送快速回复消息后将通知重置为初始状态,而不必关闭通知。

这是我的代码:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? createChannel() : "").setSmallIcon(android.R.mipmap.sym_def_app_icon).setContentTitle("My Awesome App").setContentText("Doing some work...").setContentIntent(pendingIntent);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            android.support.v4.app.RemoteInput remoteInput = new RemoteInput.Builder(BookmarkCreatorReceiver.TXT_REPLY).setLabel("Reply").build();

            Intent replyIntent = new Intent(this, BookmarkCreatorReceiver.class);
            PendingIntent replyPendingIntent = PendingIntent.getBroadcast(this, 0, replyIntent, 0);

            NotificationCompat.Action action = new NotificationCompat.Action.Builder(android.R.drawable.ic_dialog_email, "Bookmark", replyPendingIntent).addRemoteInput(remoteInput).build();
            NotificationCompat.Action actionQuick = new NotificationCompat.Action.Builder(android.R.drawable.ic_dialog_email, "Quick", replyPendingIntent).build();
            builder.addAction(action);
            builder.addAction(actionQuick);
        }

        startForeground(NOTIFICATION_ID, builder.build());

问题在于,一旦用户发送了一条消息并调用了广播接收器,通知就保持在如下加载状态:

enter image description here

如何删除加载消息,而不必丢弃通知?

1 个答案:

答案 0 :(得分:3)

根据Notifications in Android N blog post

  

处理完文本后,您必须通过使用相同的ID和标记(如果使用)调用notify()来更新通知。这是隐藏直接回复UI的触发器,应该用作一种向用户确认他们的回复已正确接收和处理的技术。

还请注意:

  

对于大多数模板,这应该涉及使用新的setRemoteInputHistory()方法,该方法将回复附加到通知的底部。

这可确保用户看到他们输入的文本得到正确处理。