Как вызвать Android LockScreen по умолчанию?

Как вызвать LockScreen по умолчанию для Android в действии или службе?

Я создаю приложение для Android, похожее на функцию «стук в Optimus G2». Но у меня есть проблема. Моя активность имеет функцию OnStop() или OnDestroy(), я не буду вызывать ее по умолчанию LockScreen или спать и просыпаться. Сначала я пробую PowerManager.gotoSleep(), но это системный API Android. Решение DevicePolicyManager, но я не буду его использовать.


person Amadas    schedule 05.03.2014    source источник


Ответы (1)


Ознакомьтесь с API администрирования устройств: http://developer.android.com/guide/topics/admin/device-admin.html#top

Администратор может использовать Device Policy Manager и lockNow() для блокировки экрана: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#lockNow%28%29

Чтобы разблокировать, вы должны использовать оконный менеджер, чтобы добавить флаг к текущему окну.

WindowManager windowManager = Context.getSystemService(Context.WINDOW_SERVICE);
Window window = getWindow();
window.addFlags(windowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);  

Чтобы включить экран:

PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManagernewWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "wakeLock");
wakeLock.acquire();

Не забудьте разрешение WAKE_LOCK в файле манифеста.

person randomizer    schedule 05.03.2014
comment
Я пытаюсь использовать API администрирования устройства, поэтому мой телефон спит. Но я не знаю, как экран на моем телефоне. Ты знаешь это? - person Amadas; 05.03.2014
comment
Вызов lockNow() из Диспетчера политик устройств должен помочь. - person randomizer; 05.03.2014
comment
Я не понимаю вашего комментария. Я вызвал lockNow(), экран телефона выключен и заблокирован. Но я не знаю, как включить автоматическое включение экрана. Я установил DevicePolicyManager.setMaximumTimeToLock(ComponentName, msTime), но он не работает, как я хочу. У меня что-то не так. - person Amadas; 05.03.2014
comment
Итак, вам удалось заблокировать его и вы хотите разблокировать его? Я не мог сделать это из вашего вопроса. Я обновил ответ. - person randomizer; 05.03.2014
comment
Хм... Я не хочу его разблокировать. Просто экран включается, я показываю экран блокировки по умолчанию. - person Amadas; 05.03.2014
comment
Затем вы должны вызвать функцию блокировки экрана, а затем использовать powermanager для отображения экрана, я добавил код PowerManager в ответ. - person randomizer; 05.03.2014
comment
Благодарю вас! Я не буду. Я пробовал эту функцию много раз, но я этого не сделал. Ваша помощь очень полезна для меня. - person Amadas; 05.03.2014