Мое приложение устанавливает режим звонка в режим молчания, но с Android N я получаю java.lang.SecurityException: Not allowed to change Do Not Disturb state
.Android N: проверка состояния «Не беспокоить» изменилась до обновления. Предпочтение
Я выполнил шаги из этого 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
и слушателем, но мне нужно было бы несколько идей для его реализации.
Спасибо!