Как включить/отключить программную функцию "не беспокоить" (dnd) в Android? Надеюсь, это даст мне что-то, но это не так:
Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1);
Как включить/отключить программную функцию "не беспокоить" (dnd) в Android? Надеюсь, это даст мне что-то, но это не так:
Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1);
Я нашел это решение:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
Для этого требуется:
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
Что, насколько я могу судить, не вызывает диалог запроса при выполнении requestPermissions(). Он должен быть предоставлен через меню настроек "Настройки" → "Звук" и "Инициация" - "Не беспокоить доступ".
Это находится на Зефире SDK 23.
Просто улучшение ответа от Иордании Парсонса. Чтобы установить приоритет, вам нужно разрешение, которое можно получить, попросив пользователя открыть Activity. Будет предложено действие, запрашивающее, хотите ли вы включить разрешение для Do Not Disturb для вашего приложения.
Эта операция может быть открыта следующим образом:
NotificationManager mNotificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
// Check if the notification policy access has been granted for the app.
if (!mNotificationManager.isNotificationPolicyAccessGranted()) {
Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
}
После предоставления этого разрешения этот параметр можно изменить.
Для тех, кто борется с LG G4, есть обходной путь.
LG не установила параметр настроек, чтобы предоставить
permission.ACCESS_NOTIFICATION_POLICY
Поэтому он сбой, когда он получает
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
Однако LG настроила опцию предоставления
permission.BIND_NOTIFICATION_LISTENER_SERVICE
И как только это разрешение будет предоставлено, так и
permission.ACCESS_NOTIFICATION_POLICY
(по крайней мере, на LG G4). Этот параметр находится в разделе "Настройки" - "Общий" - "Безопасность → ". Чтобы пользователь мог предоставить это разрешение, ваше приложение должно запросить его. Это делается путем объявления вашей службы, предполагая, что у вас есть приложение для вашего приложения, как показано в манифесте:
<service android:name="myService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>