Я создаю приложение для Android, где мне нужно перевести телефон пользователя в беззвучный режим. Я использую разные методы, и он прекрасно работает до Android M (уровень 23).
Теперь, когда все мы знаем, что Android обновил политику автоматического бесшумного режима в android N и более поздних версиях и нуждается в специальном разрешении «Не беспокоить доступ», чтобы перевести телефон в беззвучный режим. Я также сделал то же самое для Android N и более поздних версий ОС. Но это все еще не работает на Android N и позже. Когда я делаю все это, это не дает мне никакой ошибки, но все же это не работает. Я прилагаю фрагменты кода ниже, чтобы посмотреть и попытаться выяснить проблему. Спасибо, приятели.
Фрагмент кода, где я даю Не беспокоить доступ к приложению
public void onRingerPermissionsClicked(View view) {
Intent intent = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
}
startActivity(intent);
}
Способ отключения телефона
setRingerMode(context, AudioManager.RINGER_MODE_SILENT);
Метод setRingerMode ()
private void setRingerMode(Context context, int mode) {
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Check for DND permissions for API 24+
if (android.os.Build.VERSION.SDK_INT < 24 ||
(android.os.Build.VERSION.SDK_INT >= 24 && !nm.isNotificationPolicyAccessGranted())) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(mode);
}
}