如何以编程方式切换这些开关?我已经尝试过各种方法,例如:
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);
}
甚至只是取消手机静音:
private void allowAlarms() {
final AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
assert am != null;
am.adjustVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_UNMUTE);
System.out.println("Alarms ON");
}
没有任何作用,这意味着不会打开/打开警报声音。 感谢您的帮助!
编辑:只是为了确认ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED是真的。
另一个问题:如果我研究了Google源代码以确认它们的工作方式,那么大概可以找到什么思路?
答案 0 :(得分:0)
用于管理android通知系统的官方,最新的api随android 8(api级别26)一起提供
您可以查看下面的主题,对其进行详细讨论:
https://stackoverflow.com/a/50813781/1345973
新的api可以更好地控制通知系统以及如何在应用程序级别进行调整。
Android官方文档: https://developer.android.com/training/notify-user/channels
使用此api,您可以在应用程序内部覆盖“请勿打扰”的系统配置,但不能更改您提到的总体设置。可能是因为这可能不被视为您所要询问的解决方案。