首页 > 解决方案 > 奥利奥抬头通知 - 如何检测/拦截用户向状态栏滑动通知?

问题描述

使用NotificationCompat.Builder,我正在创建来电通知、PRIORITY_HIGH振动通知和持续设置为真。

notify()被调用时,它也会启动铃声播放器,播放铃声。

目前,这完美无缺。回答和拒绝操作都可以正常工作,唯一的细微差别是如果您滑动通知,它会降级到状态栏(这很好),但我也希望铃声播放器在这一点上停止。

有没有办法告诉我,或者告诉我抬头通知已被刷到状态栏中?

在评论中回答接受的答案。

通过使用 .setSound() 向构建器添加铃声解决了问题。谢谢 AA

标签: androidnotificationsandroid-8.0-oreo

解决方案


你需要的是一个deleteIntent

删除意图

当通知被用户明确解除时执行的意图,无论是使用“全部清除”按钮还是单独将其滑开。这可能不应该启动一个活动,因为其中几个将同时发送。

您可以将 设置PendingIntent为 aBroadcastReceiver然后执行您想要的任何操作。

Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
Builder builder = new Notification.Builder(this):
builder.setDeleteIntent(pendingIntent);

而对于BroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // stop your ringtone here
    }
}

推荐阅读