我有一种方法可以在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);
当我关闭开关时,我希望在默认设置为“仅优先级”模式下将警报恢复为默认状态。但是,无论我如何尝试,将其关闭后,警报仍会响起。有什么想法吗?
答案 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));
这意味着,如果希望策略对邮件或呼叫进行过滤,则必须在策略的类别部分中设置该标志。否则,它将始终不允许任何呼叫或消息。