Android cómo activar no molestar (dnd) mediante progtwigción

¿Cómo activo / desactivo ‘no molestar’ (dnd) programáticamente en Android? Estaba esperando que esto me diera algo pero no:

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

Encontré esta solución:

 NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE); 

Requiere:

  

Que, por lo que puedo decir, no aparece un cuadro de diálogo de solicitud al hacer requestPermissions (). Tiene que ser otorgado a través del menú de configuración Configuración -> Sonido y notificación -> No molestar acceso.

Esto está en SDK 23 Marshmallow.

Solo estoy mejorando la respuesta de Jordan Parsons. Para establecer la prioridad, necesita un permiso que solo puede obtenerse al pedirle al usuario que abra una Actividad. Se le preguntará si desea habilitar el permiso de No molestar para su aplicación.

Esta actividad se puede abrir de esta manera:

  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); } 

Después de otorgar este permiso, se puede cambiar esta configuración.

Para aquellos que luchan con LG G4, hay una solución.

LG no configuró la opción de configuración para otorgar

 permission.ACCESS_NOTIFICATION_POLICY 

Por lo tanto, se bloquea cuando recibe

 ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS 

Sin embargo, LG sí configuró la opción de otorgar

 permission.BIND_NOTIFICATION_LISTENER_SERVICE 

Y una vez que se otorga este permiso, también lo es

 permission.ACCESS_NOTIFICATION_POLICY 

(al menos en LG G4). Esta opción se encuentra en Configuración-> General-> Seguridad-> Acceso a notificaciones. Para que el usuario pueda otorgar este permiso, su aplicación debe solicitarlo. Esto se hace declarando su servicio, suponiendo que tiene uno para su aplicación, como se muestra en el manifiesto: