Unter Android wird angezeigt, wie man einen Systemdialog erkennt (Energieoptionen, aktuelle Apps, schwache Batterie ...)?

8

Hallo Stackoverflowers (Ich weiß, das klingt nicht so, wie es sollte ...)

Nun, ich denke, es ist fast alles in der Frage: Ich würde gerne etwas fangen, was dazu führt, dass die Anzeige meiner Aktivität sogar teilweise verborgen wird, z.B. Energieoptionen, App-Tray, Benachrichtigung bei niedrigem Akkustand, usw. ... und ich habe Schwierigkeiten, diese Systemereignisse zu erkennen.

Ich war mir ziemlich sicher, dass onPause () aufgerufen wird, wenn solche Ereignisse passieren, aber es scheint falsch zu sein ... oder bin ich es?

Irgendeine andere Idee? ... Ich würde vorzugsweise nicht jede System-Broadcast-Aktion einzeln anhängen, da ich so allgemein wie möglich sein möchte (und auf ALLES reagieren, was meine Aktivität verbirgt).

Danke für jede Eingabe!

    
Wouzz 20.01.2012, 13:48
quelle

2 Antworten

7

Beim Arbeiten mit einer Kiosk-App weiß ich, dass einige Dialoge in den Vordergrund kommen und von

erkannt werden können %Vor%

Ein Beispiel dafür ist der Bluetooth-Bindedialog, der die com.android.settings in den Vordergrund bringt.

Ein Gegenbeispiel ist der Power-Button-Dialog (Ausschalten, Neustart usw.), der nicht in den Vordergrund tritt.

Beachten Sie, dass Sie Systemdialoge (sogar den Power-Button-Dialog) mit dieser Übertragung schließen können:

%Vor%

Aber auf den meisten (allen neueren?) Geräten schließt diese Übertragung sogar die Softwaretastatur, so dass es nicht ratsam ist, einen Dienst zu haben, der ihn häufig sendet, da der Benutzer dann nichts in ein Textfeld eingeben kann.

Beachten Sie, dass ein solches Verhalten Ihre App definitiv als Malware empfinden wird, so dass sie nicht auf Google Play veröffentlicht wird.

    
FrankKrumnow 07.08.2014 09:10
quelle
0
  

Ich war mir ziemlich sicher, dass onPause () aufgerufen wird, wenn solche Ereignisse passieren, aber es scheint falsch zu sein ... oder bin ich es?

onPause() wird aufgerufen, wenn eine andere Aktivität die Vordergrundeingabe übernimmt. Wenn also eine Anwendung eines Drittanbieters in den Vordergrund gerückt wird, würde% ce_de% auch bei einer Aktivität mit Dialogthemen aufgerufen.

Es ist jedoch nicht erforderlich, dass onPause() von OS-Komponenten aufgerufen wird.

  

Ich würde vorzugsweise nicht jede Broadcasting-Aktion des Systems einzeln anhängen, da ich so allgemein wie möglich sein möchte (und auf ALLES reagieren, was meine Aktivität verbirgt).

Was Sie wollen, ist nicht möglich. Nicht alle Dinge, die du auflistet hast, haben onPause() ausgestrahlt, und es gibt andere Techniken, die Leute benutzen können (z. B. Intents ), die einen Teil deiner Aktivitäten verdecken, von denen du keine Ahnung hast.

    
CommonsWare 20.01.2012 16:56
quelle

Tags und Links