Wie Sie erraten können, melde ich einen Alarm durch AlarmManager. Und der BroadcastReceiver wird korrekt aufgerufen. Aber als es angerufen hat, ist mein Telefonbildschirm immer noch gesperrt. Ich bemerke, dass die Standard-AlarmClock-Anwendung nicht so ist. Meine Frage ist also, wie man den Bildschirm entsperrt, wenn der BroadcastReceiver aufgerufen wird? (Entsperren Sie den Bildschirm kann den Benutzer veranlassen, meine Aktivität direkt zu betreiben) Vielen Dank im Voraus.wie der Bildschirm zu entsperren, wenn BroadcastReceiver aufgerufen wird?
7
A
Antwort
8
Der Quellcode für den Wecker befindet sich im Android-Quellcode. AlarmClock ist weg, wurde aber durch DeskClock ersetzt. Source code is here. Ich warf einen schnellen Blick auf den Code und der Empfänger scheint die KeyguardManager zu verwenden. Schauen Sie sich die Dokumentation an, die scheint, was Sie wollen.
EDIT: Ich werde Ihre Ergebnisse hier hinzufügen. Dieser Code sollte tun:
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
0
die Aktivität Öffnen A, die Sie von OnReceive (....) beginnen soll. Fügen Sie diese in onCreate() dieser Aktivität A
final Window win= getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Achten Sie darauf, nicht einfügen sind es vor setContentView (....) :)
Danke, liest i den Quellcode Sie hier geben. Eigentlich habe ich schon einige Codes durchsucht, aber aus irgendwelchen Gründen kann ich den Standard-AlarmClock-Quellcode nicht bekommen. –
Ja, weil es gelöscht wurde. Die neue Schärfe ist "DeskClock". In jedem Fall, werfen Sie einen Blick auf die KeyguardManager-Dokumentation (ich verlinkte sie) und sehen Sie, ob Sie das brauchen. – EboMike
Ich habe 'Docu KeyguardManager' angeschaut, und wie es sagt: "Klasse, die verwendet werden kann, um die Tastatur zu sperren und zu entsperren.", Nehme ich an, dass ich das brauche. Aber die API scheint nicht sehr direkt zu sein. Ich brauche etwas Zeit, um es zu versuchen. Danke trotzdem. –