teléfono - Android: ¿Detectar el estado No molestar?
no molestar al ir al volante android (2)
Con los punteros de Android, cómo activar no molestar (dnd) programáticamente :
En el SDK 23 , android.app.NotificationManager proporciona la interfaz que necesita, a saber, NotificationManager.getCurrentInterruptionFilter()
.
Debe devolver uno de:
-
INTERRUPTION_FILTER_PRIORITY
-
INTERRUPTION_FILTER_ALARMS
-
INTERRUPTION_FILTER_NONE
-
INTERRUPTION_FILTER_ALL
-
INTERRUPTION_FILTER_UNKNOWN
Según la Ayuda de Google en dispositivos Nexus, la función No molestar es una característica de Android> = 6.0, por lo que el SDK 23 debería ser razonable. Si no lo es, creo que sería razonable preguntar por qué, para poder proporcionar una solución alternativa.
Me preguntaba si hay una manera de verificar si un dispositivo Android (21+) está en modo No molestar. Sé que hay AudioManager.RINGER_MODE_SILENT
, pero me preguntaba si eso se debe a esta situación o si hay una mejor manera de comprobarlo.
Traigo el necro con esta publicación, pero solo estaba buscando una solución al mismo problema y superé esta publicación como lo hice yo, así que estoy dejando una solución para la referencia futura.
No pude encontrar una forma "oficial" de hacer esto, pero encontré un valor que puede devolver el estado DnD como un entero. La función se llama "zen_mode" internamente, por lo que puede verificar el valor actual con el siguiente código:
Global.getInt(getContentResolver(), "zen_mode")
Eso volverá:
- 0 - Si DnD está desactivado .
- 1 - Si DnD está activado - Sólo prioridad
- 2 - Si DnD está activado - Silencio total
- 3 - Si DnD está activado - Sólo alarmas
Cuando la configuración es solo de prioridad, no devuelve nada, pero puede averiguar ese estado suponiendo que no hay noticias = modo de mensajes de prioridad. Esto debe haber sido un error, ya que ahora es un año, ahora devuelve un valor al igual que los otros estados. No tengo idea de cuándo se solucionó, pero ahora funciona como cabría esperar.
También probé con un observador de ajustes, que funciona pero solo para ciertas transiciones de estado, por lo que creo que las encuestas periódicas son la mejor opción, hasta que se encuentre disponible una forma "oficial" de escuchar este cambio de estado.
He incluido los métodos de observador y de sondeo para obtener el valor de esta Gist . Esperemos que ayude / salve a alguien más tiempo.
Actualización 15 de marzo de 2017: Gracias a David Riha por el comentario. Se agregó 1 - Priority Only
Estado de 1 - Priority Only
respuesta con 1 - Priority Only
, se revisó el Gist para reconocer ese estado y se generaron valores desconocidos para iniciar sesión en caso de que otros dispositivos o actualizaciones futuras decidan devolver un valor diferente.