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

¿Cómo puedo activar / desactivar "no molestar" (dnd) mediante programación en Android? Era esperar que esto me diera algo pero no lo hace:

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

He encontrado esta solución:

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

Requiere:

 <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> 

Que por lo que puedo decir no aparece un diálogo de solicitud al hacer requestPermissions (). Se debe otorgar a través del menú de configuración Ajustes -> Sonido y notificación -> No molestar el acceso.

Esto está en el SDK 23 Marshmallow.

Mejorando la respuesta de Jordan Parsons. Para establecer la prioridad, necesita un permiso que sólo puede obtenerse preguntando al usuario que abre una Actividad. Se le preguntará a una actividad si desea habilitar el permiso para no molestar a 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 conceder este permiso, esta configuración se puede cambiar.

Para aquellos que luchan con LG G4, hay una solución. LG no configuró la opción de configuración para conceder permiso.ACCESS_NOTIFICATION_POLICY. Por lo tanto, se bloquea cuando recibe la intención ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS. Sin embargo, LG configuró la opción para conceder el permiso.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 está en Configuración-> General-> Seguridad-> Acceso a la notificación. Para que el usuario pueda conceder este permiso, su aplicación debe solicitarlo. Esto se hace declarando su servicio, asumiendo que tiene uno para su aplicación, de la siguiente manera en el manifiesto:

 <service android:name="myService" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> <intent-filter> <action android:name="android.service.notification.NotificationListenerService" /> </intent-filter> </service> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.