Я создаю виджет приложения на Android, который позволяет пользователю изменять его режим звонка. Я уже видел виджет приложения, который делает это достаточно гибко, не запрашивая у пользователя никакого разрешения, т.е.: https://play.google.com/store/apps/details?id=com.guywmustang.silentwidget
В моем приложении работает функция «Звонок до вибрации» и «Вибрация до звонка», но при попытке изменить ошибку выдается ниже. Звонок в Беззвучный режим или наоборот
java.lang.SecurityException: Not allowed to change Do Not Disturb state
at android.os.Parcel.createException(Parcel.java:1953)
at android.os.Parcel.readException(Parcel.java:1921)
at android.os.Parcel.readException(Parcel.java:1871)
at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:1328)
at android.media.AudioManager.setRingerMode(AudioManager.java:1144)
Кто-нибудь может рассказать, какой трюк использует виджет playstore?
мой код, протестированный на Redmi Note 7, Android 9.0:
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
break;
case AudioManager.RINGER_MODE_NORMAL:
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
break;
case AudioManager.RINGER_MODE_VIBRATE:
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
break;
}