如何以编程方式切换这些设置?

时间:2019-02-27 17:26:12

标签: java android toggle

enter image description here

如何以编程方式切换这些开关?我已经尝试过各种方法,例如:

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源代码以确认它们的工作方式,那么大概可以找到什么思路?

1 个答案:

答案 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,您可以在应用程序内部覆盖“请勿打扰”的系统配置,但不能更改您提到的总体设置。可能是因为这可能不被视为您所要询问的解决方案。