10 Stimmen

Android - Aktivierung der Systemtastensperre (auch Sperrbildschirm genannt)

Ich muss die Systemtastensperre von Android aktivieren (die, die man erhält, wenn man auf die den Strom abschalten / auflegen Taste). Siehe hier:

img

Ich habe die Dokumente bereits durchgesehen, aber alles, was ich gefunden habe, war PowerManager y KeyguardManager . Beides scheint nicht die Lösung zu sein :-(.

Weiß jemand, wie man das mit einer Android-Anwendung erreichen kann? (Wenn spezielle Berechtigungen erforderlich sind, ist das kein Problem, aber die Änderung der Geräteeinstellungen ist keine Lösung...)

EDIT : Oder weiß jemand, dass dies definitiv nicht möglich ist? Btw. craigs Lösung mit dem Senden von Schlüsseln funktioniert nicht mehr (siehe Kommentare).

3voto

Orkun Ozen Punkte 6645

Ich habe eine Weile nach einer Antwort auf genau diese Frage gesucht. Offenbar wurden ab 2.0 die Gerätemanager-Rechte für die App-Ebene entfernt. Aber mit Froyo - 2.2 der Gerätepolitik-Manager ist offenbart Gewährung uns Entwickler eine Vielzahl von administrativen Ebene Kontrollen.

http://developer.Android.com/guide/topics/admin/device-admin.html

1voto

sthg Punkte 1107

Was Sie suchen, ist die [reenableKeyguard()](http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html#reenableKeyguard()) Methode in KeyguardManager.KeyguardLock mein Freund!

1voto

JRL Punkte 74309

Es sieht so aus, als ob die Bildschirmsperrfunktion mit dieser Methode ausgeführt wird:

public void goToSleep(long time)

Methode in PowerManager.java . Es ist möglich, auf diese Weise einen Hinweis darauf zu erhalten:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

Dies erfordert jedoch die Genehmigung

android.permission.DEVICE_POWER

eine Berechtigung der Stufe 2, die nur für das System verfügbar ist.

Es sieht also so aus, als sei das nicht machbar. Dies gilt nur für Version 1.1, ich weiß nicht, für 1.5.

0voto

Craig Otis Punkte 29748

Hier gibt es ein ziemlich gutes Beispiel:

http://www.anddev.org/throwing-simulating_keystrokes_programatically-t717.html

Es sieht so aus, als könnten Sie programmgesteuert veranlassen, dass jeder Tastendruck an das System gesendet wird. Es klingt so, als ob der Schlüsselcode, den Sie suchen, KEYCODE_ENDCALL ist, aber wenn das nicht funktioniert, gibt es viele andere Codes, die Sie hier versuchen können:

http://developer.Android.com/reference/Android/view/KeyEvent.html

Ich weiß nicht, ob es einen API-Aufruf gibt, um die Sperre auszulösen, aber dies scheint ein ziemlich stabiler Workaround zu sein, bis Sie eine bessere Lösung finden.

0voto

Steve Pomeroy Punkte 9861

Beim Durchforsten des Android-Quelltextes fand ich den WindowManagerService, der eine öffentliche Methode zu haben scheint ( startAppFreezingScreenLocked ), um diese zu aktivieren. Dies könnte ein guter Ort sein, um mit der Suche nach einer Antwort zu beginnen, da es leider nicht so aussieht, als ob Sie direkt ein WindowManagerService-Objekt erhalten können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X