Как отключить разблокировку экрана программно

  1. Мне нужно заблокировать телефон Android, когда пользователь покидает определенную зону WiFi
  2. Мне нужно, чтобы пользователь не разблокировал телефон, когда он/она находится вне определенной зоны WiFi
  3. Мне нужно разблокировать телефон, когда пользователь вернулся в зону WiFi

Я думаю, пункты 1 и 3 списка могут быть сделаны программно.

Можно ли сделать 2- й предмет?

Ответ 1

Мне нужно запретить пользователю разблокировать телефон, когда он находится вне определенной области WiFi

К счастью, это не поддерживается по очевидным соображениям безопасности.

Вы можете создать свой собственный домашний экран, который предлагает другое поведение, когда внутри/за пределами определенной области и использовать это вместо попытки предотвратить разблокировку телефона. Тем не менее, пользователь может удалить этот домашний экран, загрузив свое устройство в безопасный режим и удалив ваше приложение.

Ответ 2

Блокировка может быть выполнена с помощью этого метода: Как заблокировать экран устройства Android. Разблокировка смотрите здесь: Как отображать активность, когда экран заблокирован?

Для вашей проблемы 2, я вижу 2 решения

а. Если пользователь разблокирует экран, выдается сообщение: проверьте в тот момент, если вы находитесь в этой области, а если нет, немедленно закройте снова

б. создайте свой собственный locksreen без возможности разблокировать себя

Ответ 3

Я сделал аналогичную вещь в прошлом, но не имею кода прямо сейчас, поэтому не могу помочь в этом отношении. То, что я сделал, - это реализовать приложение как автомобильную док-станцию, которая заставит кнопку "Домой" переопределить, если режим автомобильной док-станции не отключен. Я надеюсь, что это поможет, для кода google он определенно найдет ресурсы

Ответ 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");
}