如何还原此NotificationManager.Policy方法?

时间:2019-02-03 15:02:09

标签: java android

我有一种方法可以在Android P中启用“请勿打扰”时启用警报。我有一个切换按钮可以打开警报,并且一切正常,但是问题是我不知道该使用哪种方法进行切换关闭警报。

这是我的代码:

    private void allowAlarms() {
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    assert notificationManager != null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        notificationManager.setNotificationPolicy(
                new NotificationManager.Policy(NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS,
                        NotificationManager.Policy.PRIORITY_SENDERS_ANY,
                        NotificationManager.Policy.PRIORITY_SENDERS_ANY));
    }
    notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);
}

我尝试取消通知管理器,但这不起作用,并且警报仍然响起。

notificationManager.cancel(0)

我也尝试过再次简单地调用“仅优先级”代码,但这也不起作用。

assert mNotificationManager != null;
                    mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);

当我关闭开关时,我希望在默认设置为“仅优先级”模式下将警报恢复为默认状态。但是,无论我如何尝试,将其关闭后,警报仍会响起。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以先使用NotificationManager.getNotificationPolicy()来获取策略,然后再进行更改,并与NotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL)一起设置为该策略

答案 1 :(得分:0)

您必须使用以下内容:

 notificationManager.setNotificationPolicy(
            new NotificationManager.Policy(NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS | NotificationManager.Policy.PRIORITY_CATEGORY_CALLS | NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES,
                    NotificationManager.Policy.PRIORITY_SENDERS_ANY,
                    NotificationManager.Policy.PRIORITY_SENDERS_ANY));

这意味着,如果希望策略对邮件或呼叫进行过滤,则必须在策略的类别部分中设置该标志。否则,它将始终不允许任何呼叫或消息。