Как отключить разблокировку экрана программно
- Мне нужно заблокировать телефон Android, когда пользователь покидает определенную зону WiFi
- Мне нужно, чтобы пользователь не разблокировал телефон, когда он/она находится вне определенной зоны WiFi
- Мне нужно разблокировать телефон, когда пользователь вернулся в зону WiFi
Я думаю, пункты 1 и 3 списка могут быть сделаны программно.
Можно ли сделать 2- й предмет?
Ответы
Ответ 1
Мне нужно запретить пользователю разблокировать телефон, когда он находится вне определенной области WiFi
К счастью, это не поддерживается по очевидным соображениям безопасности.
Вы можете создать свой собственный домашний экран, который предлагает другое поведение, когда внутри/за пределами определенной области и использовать это вместо попытки предотвратить разблокировку телефона. Тем не менее, пользователь может удалить этот домашний экран, загрузив свое устройство в безопасный режим и удалив ваше приложение.
Ответ 2
Блокировка может быть выполнена с помощью этого метода: Как заблокировать экран устройства Android.
Разблокировка смотрите здесь: Как отображать активность, когда экран заблокирован?
Для вашей проблемы 2, я вижу 2 решения
а. Если пользователь разблокирует экран, выдается сообщение: проверьте в тот момент, если вы находитесь в этой области, а если нет, немедленно закройте снова
б. создайте свой собственный locksreen без возможности разблокировать себя
Ответ 3
Я сделал аналогичную вещь в прошлом, но не имею кода прямо сейчас, поэтому не могу помочь в этом отношении. То, что я сделал, - это реализовать приложение как автомобильную док-станцию, которая заставит кнопку "Домой" переопределить, если режим автомобильной док-станции не отключен. Я надеюсь, что это поможет, для кода google он определенно найдет ресурсы
Ответ 4
Я думаю, это поможет вам. Это только для Disabling
Lock Programmatically
. Отключить блокировку экрана
Ответ 5
private Window w;
public void onResume() {
w = this.getWindow();
w.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
w.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
w.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
super.onResume();
tToast("onResume");
}