2015-07-13 9 views
15

Ich habe mich gerade gefragt, ob es eine Möglichkeit gibt zu überprüfen, ob ein Android-Gerät (21+) im Nicht stören Modus ist? Ich weiß, es gibt AudioManager.RINGER_MODE_SILENT, aber ich frage mich, ob das zu dieser Situation gehört, oder ob es eine bessere Möglichkeit gibt, das zu überprüfen?Android: Status "Nicht stören" erkennen?

Antwort

6

Ich bringe den NECRO mit diesem Beitrag, aber war nur auf der Suche nach einer Lösung für das gleiche Problem und kam vorbei an diesem Post wie ich, also lasse ich eine Lösung für die Zukunft ref.

Ich konnte keine "offizielle" Möglichkeit finden, dies zu tun, aber fand einen Wert, der den DnD-Zustand als eine ganze Zahl zurückgeben kann. Das Feature wird "zen_mode" intern aufgerufen, so dass Sie den aktuellen Wert mit dem folgenden Code überprüfen:

Global.getInt(getContentResolver(), "zen_mode") 

Das wird zurück:

  • - Wenn DnD off ist.
  • - Wenn DnD ist auf - Priorität Nur
  • - Wenn DnD ist auf - Total Stille
  • - Wenn DnD ist auf - Alarme Nur

Wenn die Einstellung nur Priorität hat, gibt sie nichts zurück, aber Sie können diesen Zustand nach assum herausfinden Keine Nachrichten = Prioritätsnachrichten-Modus. Das muss ein Fehler gewesen sein, da es jetzt ein Jahr ist, gibt es jetzt einen Wert zurück, genau wie die anderen Zustände. Keine Ahnung, wann es repariert wurde, aber es funktioniert jetzt wie erwartet.

Ich versuchte es auch mit einem Einstellungsbeobachter, der aber nur für bestimmte Zustandsübergänge funktioniert, daher denke ich, dass periodische Abfragen die beste Wette sind, bis eine "offizielle" Methode für diese Zustandsänderung verfügbar ist.

Ich habe beide Beobachter und Abfragemethoden, um den Wert in this Gist zu erhalten. Hoffentlich hilft es jemandem später.

Update 15. März 2017: Danke an David Riha für den Kommentar. Added 1 - Priority Only Zustand zu beantworten, revised the Gist diesen Zustand zu erkennen, und unbekannte Werte zur Anmeldung ausgeben, falls andere Geräte oder zukünftige Updates entscheiden, einen anderen Wert zurückzugeben.

+1

Auf meinem Gerät wird 1 zurückgegeben, wenn die Einstellung nur Priorität hat. –

+0

@DavidRiha Danke, dass du darauf hingewiesen hast! Ich habe seit über einem Jahr nicht mehr versucht und kann nun bestätigen, dass es auf meinen Geräten 1 zurückgibt. Ich habe meine Antwort und Gist aktualisiert. – MattMatt

8

Mit Zeiger von Android how to turn on do not disturb (dnd) programmatically:

In SDK 23 stellt android.app.NotificationManager die Schnittstelle, die Sie benötigen, nämlich NotificationManager.getCurrentInterruptionFilter().

Es sould einem der Rückkehr:

  • INTERRUPTION_FILTER_PRIORITY
  • INTERRUPTION_FILTER_ALARMS
  • INTERRUPTION_FILTER_NONE
  • INTERRUPTION_FILTER_ALL
  • INTERRUPTION_FILTER_UNKNOWN

Nach Google Help on Nexus DevicesBitte nicht stören ist eine Funktion von Android> = 6.0, also sollte SDK 23 vernünftig zu fragen sein. Wenn nicht, wäre es vernünftig zu fragen, warum, um einen Workaround anbieten zu können.

Verwandte Themen