Wie finde ich heraus, welche Apps unter "Priorität App-Benachrichtigungen" in der Einstellung "Nicht stören" erlaubt sind?

8

Ich versuche programmgesteuert herauszufinden, für welche Apps die Einstellung "Nicht stören" ausnahmsweise umgangen wird.

Bisher verwende ich den folgenden Code, um zu überprüfen, ob das Telefon im Nicht stören-Modus ist oder nicht:

%Vor%

Wenn ich auf den Tab Priorität App-Benachrichtigungen klicke, erhalte ich eine Liste aller installierten Apps, für die ich auswählen kann, welche Apps als bevorzugte Ausnahmen zugelassen werden sollen.

Meine Frage ist, wie Sie programmatisch die Liste der Apps abrufen können, die als Prioritätsausnahmen für den Nicht stören-Modus zulässig sind, und dadurch die Logik definieren, die den Kommentar im obigen Code ersetzt? Jede Lösung würde sehr geschätzt werden.

    
SoulRayder 03.05.2017, 17:00
quelle

2 Antworten

2

Sie suchen nach einer Möglichkeit, festzustellen, welche Apps auf dem System eine Benachrichtigungsrelevanz von Notification.IMPORTANCE_MAX haben. Entschuldigen Sie dies, aber dies ist bei einer Nicht-System-App nicht möglich. Sie müssen Zugriff auf INotificationService haben, damit Sie getImportance(packageName) aufrufen können. Siehe die Benachrichtigungs-Manager-Quelle , aber geschützt durch einen Check Damit stellen Sie sicher, dass Sie eine System-App oder die App sind, deren Paket Sie weitergegeben haben, damit die Reflektion nicht funktioniert ...

Google ermöglicht einer App, über die Funktion NotificationManager mit getImportance() ( siehe Dokumente ), aber Sie können es nicht mit einem beliebigen Paket aufrufen.

Die andere Antwort hier bezieht sich auf das Auschecken der Quelle aus der App mit den Systemeinstellungen, und genau das habe ich getan. Nach einer Weile des Durchstöberns des Codes habe ich herausgefunden, welche Apps in den "Overrides Do not Disturb "Menü von dieser Code hier , der mich geführt hat auf dem Weg zu entdecken, wie wir das IMPORTANCE_*

ermitteln konnten

Tut mir leid, aber die Vorschläge des anderen Beantworters funktionieren auch nicht, weil sie entweder falsch sind (packages.xml hat keine Informationen) oder root benötigen, was nicht auf allen Geräten zuverlässig ist .

    
Hypothetical inthe Clavicle 11.05.2017, 21:44
quelle
0

Sie können versuchen, die folgenden Dinge zu tun (einige dieser Dinge benötigen möglicherweise Zugriffsrechte):

  1. Laden Sie den Quellcode für die Einstellungen-App herunter und sehen Sie sich an, wie die Einstellungen für Apps aussehen bekommt die Liste.
  2. Analysiere packages.xml. Normalerweise sind dort viele Informationen über die Apps gespeichert.
  3. Überprüfen Sie, ob die Liste in settings.db
  4. gespeichert ist
rupesh jain 11.05.2017 20:40
quelle