¿Cómo encontrar qué aplicaciones están permitidas en "Notificaciones de aplicaciones prioritarias" dentro de la configuración No molestar?

Estoy intentando programar para saber para qué aplicaciones la configuración de no molestar se pasa por alto excepcionalmente.

Introduzca aquí la descripción de la imagen

Hasta ahora, estoy utilizando el siguiente código para comprobar si el teléfono está configurado en modo No molestar o no:

public static boolean isDnDModeEnabled(Context context) { if(Build.VERSION.SDK_INT <23) return false; try { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); int filterValue = notificationManager.getCurrentInterruptionFilter(); switch(filterValue) { case NotificationManager.INTERRUPTION_FILTER_ALL : Log.d("DND","Interruption filter all"); break; case NotificationManager.INTERRUPTION_FILTER_ALARMS : Log.d("DND","Interruption filter alarms"); break; case NotificationManager.INTERRUPTION_FILTER_PRIORITY : Log.d("DND","Interruption filter priority"); break; case NotificationManager.INTERRUPTION_FILTER_UNKNOWN : Log.d("DND","Interruption filter unknown"); break; case NotificationManager.INTERRUPTION_FILTER_NONE : Log.d("DND","Interruption filter none"); break; } if(filterValue == NotificationManager.INTERRUPTION_FILTER_ALL) return false; else if(filterValue == NotificationManager.INTERRUPTION_FILTER_PRIORITY) { //Logic based on which apps are allowed as priority return true; //or false } else return true; } catch(Exception e) { return false; } } 

Cuando hago clic en la pestaña Noticies de la aplicación Priority , obtengo una lista de todas las aplicaciones instaladas para las que tengo que elegir qué aplicaciones permitir como excepciones de prioridad.

Mi pregunta es cómo obtener mediante programación la lista de aplicaciones que están permitidas como excepciones de prioridad para el modo No molestar y, por tanto, definir la lógica sustituir el comentario en el código anterior? Cualquier solución sería muy apreciada.

Está buscando una forma de determinar qué aplicaciones del sistema tienen una importancia de Notification.IMPORTANCE_MAX de Notification.IMPORTANCE_MAX y, lo siento, pero esto no es posible por una aplicación que no sea del sistema. Necesita tener acceso al INotificationService para que pueda llamar a getImportance(packageName) . Vea la fuente de Notification Manager, pero está protegido por un cheque que garantiza que es una aplicación del sistema o la aplicación cuyo paquete ha pasado así que la reflexión está fuera …

Google permite que una aplicación obtenga su propia importancia de notificación a través de NotificationManager con getImportance() ( vea docs ), pero no puede llamarla con un paquete arbitrario.

La otra respuesta aquí hace referencia a la comprobación de la fuente de la aplicación de configuración del sistema y eso es exactamente lo que hice y, después de un rato de rastreo a través del código, descubrí cómo determinar qué aplicaciones deben aparecer en el "Overrides Do Not Disturb" menú Por este código aquí que me llevó por el camino de descubrir cómo podríamos determinar la IMPORTANCE_*

Lo siento hombre, pero las sugerencias hechas por el otro contestador tampoco van a funcionar porque son incorrectas (packages.xml no tiene la información) o van a requerir root que no es confiable en todos los dispositivos.

Puedes intentar seguir las cosas (algunas de estas cosas pueden necesitar acceso de privilegio):

  1. Descargue el código fuente de la aplicación de configuración y compruebe cómo las aplicaciones de configuración reciben la lista.
  2. Analizar paquetes.xml.Por lo general, mucha información sobre las aplicaciones se almacena allí.
  3. Compruebe si la lista está almacenada en settings.db
  • ¿Cómo borro las notificaciones usando el shell de ADB?
  • Google maneja ahora la mensajería de whatsapp
  • Botones grises al agregar acciones a notificaciones en Jelly Bean
  • La notificación de Android no muestra su contenido cuando la aplicación no se está ejecutando
  • Dimensiones grandes de la imagen de la notificación de Android
  • ¿La actualización de una notificación elimina el estado de primer plano de un servicio?
  • ¿Cómo actualizar la notificación con RemoteViews?
  • Android GCM: no obtener el token de registro en el método onCreate ()
  • ¿Cómo hacer un temporizador de cuenta atrás en la vista de Notificación?
  • Cómo quitar la notificación de la barra de notificación mediante programación en android?
  • Cómo utilizar las acciones de la notificación sin iniciar la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.