【发布时间】:2017-02-05 13:41:36
【问题描述】:
我的应用程序将铃声模式设置为静音,但在 Android N 上我得到了java.lang.SecurityException: Not allowed to change Do Not Disturb state。
我按照post 中的步骤操作,以下代码将打开一个活动,其中包含一个切换按钮,用于启用更改铃声模式的权限。无需启用权限即可“支持”此活动。
Intent intent = new Intent(
android.provider.Settings
.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
问题是我想确保在尝试使用静音振铃模式功能之前已授予权限。
我正在添加一个 CheckBoxPreference 来启用和禁用此铃声模式切换。因此,如果选中该复选框,我可以将振铃模式设置为静音,如果不是,我将不会更改振铃模式。
到目前为止,当用户单击复选框时,我设法启动了此权限请求:
disableSoundCheckboxPreference.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
...
// check for Android N and start the activity mentioned above
但是只有在授予权限的情况下才启用此复选框的正确方法是什么?我想这应该与ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED和一个听众有关,但我需要一些想法来实现它。
谢谢!
【问题讨论】:
标签: android android-notifications android-preferences android-audiomanager android-7.0-nougat