Android - активация блокировки системной клавиши (он же экран блокировки) - PullRequest
9 голосов
/ 09 апреля 2009

Мне нужно активировать блокировку системной клавиши Android (та, которую вы получаете при нажатии кнопки power / повесить трубку ). Смотрите здесь:

img

Я уже просматривал документы, но все, что я нашел, было PowerManager и KeyguardManager . Кажется, что оба не являются решением: - (.

Итак, все знают, как этого добиться с помощью приложения для Android? (Если требуются специальные разрешения, это не проблема, но изменение настроек устройства не является решением ...)

РЕДАКТИРОВАТЬ : Или кто-то знает, что это определенно невозможно вообще? Btw. Решение Craigs с отправкой ключей больше не работает (см. комментарии).

Ответы [ 5 ]

3 голосов
/ 02 ноября 2010

Я долго искал ответ на тот же вопрос. По-видимому, после версии 2.0 и выше привилегии диспетчера устройств для уровня приложения были удалены. Но в Froyo - 2.2 обнаружен диспетчер политик устройств, предоставляющий нам разработчикам множество административных элементов управления.

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

1 голос
/ 20 апреля 2009

Похоже, что функция блокировки экрана выполняется с помощью метода:

public void goToSleep(long time)

метод в PowerManager.java. Получить ссылку на это можно следующим образом:

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

Однако для этого требуется разрешение

android.permission.DEVICE_POWER

, то есть разрешение уровня 2, доступное только для системы.

Похоже, это невозможно. Это только для версии 1.1, я не знаю, для 1.5.

1 голос
/ 20 апреля 2009

Вам нужен метод reenableKeyguard () в KeyguardManager.

0 голосов
/ 20 апреля 2009

При поиске в источнике Android обнаружен WindowManagerService, который, по-видимому, имеет открытый метод (startAppFreezingScreenLocked) для активации этого. Это может быть хорошим местом для начала поиска вашего ответа, поскольку, к сожалению, не похоже, что вы можете напрямую получить объект WindowManagerService.

0 голосов
/ 09 апреля 2009

Вот довольно хороший пример:

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

Похоже, что вы можете программно вызвать любую комбинацию клавиш для отправки в систему. Звучит так, как будто вы ищете ключевой код KEYCODE_ENDCALL, но если это не сработает, есть много других кодов, которые можно попробовать здесь:

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

Я не знаю, есть ли какой-либо вызов API, чтобы вызвать блокировку, но это кажется довольно надежным обходным решением, пока вы не найдете лучшее решение.

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