Ich habe eine Anwendung, die ich, dass automatisch verwenden sperrt (erfordert einen Bildschirm Passworteingabe) ...Hinzufügen eines PASSWORD-Bildschirms zu einer App, die erneut gesperrt wird, wenn das Gerät schläft?
a) when the app starts for the first time
b) when another app is started and takes over the device
c) when the device "sleeps" automatically
d) when the user "sleeps" the device manually
(note: with c & d, if the user "awakens" the app within 5 seconds, it does NOT ask for the password)
Ich möchte dies für eine App tun, die ich auch schreibe, damit ich eine Aktivität erstellt (PasswordActivity
) mit den notwendigen Verifikationsschritten und lassen es richtig funktionieren.
Ich legte es ursprünglich in die ONCREATE
der (das wurde in der AndroidManifest gestartet). Das schien gut zu funktionieren. Aber dann begann die Re-Lock-Fähigkeit. Also versucht, es auf die ONSTART
oder ONRESUME
zu verschieben. Aber als dann eine andere AKTIVITÄT in meiner APP den Fokus nahm, oder der Bildschirm rotierte, dann feuerte der PasswordActivity
erneut. Das wird nicht funktionieren.
Hier habe ich einen Thread gefunden, der es empfiehlt, die LAUNCHER App im Manifest zu machen und dann, wenn das Passwort OK ist, die MainActivity aufzurufen. Das schien besser zu funktionieren ... aber dann kam es zu einem Problem, dass es nur dann wieder gesperrt wird, wenn der Benutzer den Zurück-Button vom Hauptbildschirm aus gedrückt hat (ich nehme an, ich stoppe meine App) und startet die App erneut. Fängt jedoch keine andere APP ein, die das Gerät übernimmt.
Also basierend darauf, und nachdem ich die gesamte Dokumentation gelesen habe, kann ich Lebenszyklen finden (obwohl die meisten davon ACTIVITY-basiert sind, nicht APPLICATION) nicht sicher, wie man fängt, wenn die APP selbst den Fokus verliert (eine andere App übernimmt) und wie man den automatischen oder manuellen Schlaf (C & D oben) zusammen mit der Zeitverzögerungsüberprüfung handhabt. Ich gehe davon aus, dass es sich um eine Kombination von mehreren Anrufen oder Schritten handelt, aber nicht genau, welche an dieser Stelle.
Irgendwelche Empfehlungen?
Ich denke, wenn Ihre App auf Hintergrund geht (verliert Fokus) wird die Funktion 'onPause' ausgeführt. Das ist was du verlangst? – UDKOX
'OnPause' von dem, was ich sagen kann (und online gelesen haben in Bezug auf LIFECYCLES Brände, wenn eine Aktivität Fokus verliert ... nicht unbedingt die APP selbst. Wenn ich versuche, es in' onPause' zu fangen passiert es, wenn eine andere Aktivität INNERHALB meiner App wird auch fokussiert. Das geht nicht. – Peter
Kannst du nicht einfach überprüfen, ob eine andere Aktivität den Fokus hat? Etwas wie: 'public void onPause() {if (! hasAnotherActivityFocus()) {lockPassword();}}' – UDKOX