Подтвердить что ты не робот

Android, как включить, не беспокоить (dnd) программно

Как включить/отключить программную функцию "не беспокоить" (dnd) в Android? Надеюсь, это даст мне что-то, но это не так:

Settings.System.putInt(getContentResolver(), Settings.System.DO_NOT_DISTURB, 1);
4b9b3361

Ответ 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.

Ответ 2

Просто улучшение ответа от Иордании Парсонса. Чтобы установить приоритет, вам нужно разрешение, которое можно получить, попросив пользователя открыть 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);
 }

После предоставления этого разрешения этот параметр можно изменить.

Ответ 3

Для тех, кто борется с 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>