Блокировка экрана обнаружения домашней кнопки - PullRequest
15 голосов
/ 18 марта 2019

Я недавно загрузил приложение блокировки экрана ACDisplay:

https://play.google.com/store/apps/details?id=com.achep.acdisplay

Приложение показывает наложение на моем устройстве, одновременно обнаруживая home button click на activity, так что я не могу обойти экран блокировки. Он также может каким-то образом полностью скрыть recent button на некорневом устройстве. Как это возможно?

Я перешел по следующим ссылкам:

Обнаружение нажатия кнопки домой в Android

Как определить, что пользователь нажимает клавишу HOME в своей деятельности?

Как определить, что пользователь нажимает клавишу HOME в своей деятельности?

и все решения, используемые для старых версий Android ИЛИ говорят, что нажатие кнопки home не может быть обнаружено, поскольку оно может использоваться вредоносными приложениями.

Как это приложение может это сделать?

Может ли кто-нибудь поделиться примером кода / приложения о том, как запретить пользователю выходить из приложения экрана блокировки до тех пор, пока он не будет успешно аутентифицирован?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 26 марта 2019

С разрешением администратора устройства https://developer.android.com/guide/topics/admin/device-admin вы можете прагматически блокировать разблокировку устройства.

Это приложение также использует разрешение для "извлечения запущенных приложений" android.permission.GET_TASKS, поэтому мы можем обнаружить текущий запущенный передний планприложение.Проверить ответ.https://stackoverflow.com/a/17756786/1025070 с этим, если пользователь попытается нажать домой и уйти, мы сможем мгновенно проверить приложение не в forground и снова запустить нашу деятельность.(это обходной путь, чтобы определить, если пользователь уходит из приложения при нажатии Home).

Проверьте мое приложение https://play.google.com/store/apps/details?id=com.udayalakmal.applock&hl=en, которое добавляет наложение экрана блокировки на любое приложение, которое не может обойти.использовать одно и то же приложение проверки запуска на переднем плане.


@ user2511882 - Создан пример приложения, которое просто загружает Activity, когда устройство заблокировано, и другое действие, когда устройство разблокируется

https://github.com/UdayaLakmal/LockScreenDemo

** Это всего лишь демонстрация, вы должны использовать приемники с фоновым сервисом для продолжения мониторинга состояния устройства и устранения утечек памяти. При тестировании с Android 6 API 23 не нужно отслеживать запущенные приложения, так как это используется только с экраном блокировки устройства.

** Проверьте, как я получаю событие нажатия кнопки «Домой» в режиме блокировки экрана.

1 голос
/ 16 мая 2019
            WindowManager windowManager  = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
            WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
            } else {
                layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
            }
            layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
            layoutParams.x = 0;
            layoutParams.y = 0;
            layoutParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
            View window = LayoutInflater.from(this).inflate(R.layout.activity_main, null, false);

            windowManager.addView(window, layoutParams);

Следующий фрагмент кода блокирует кнопки «Домой», «Назад» и «Последние» согласно требованию.

Также требуется следующее разрешение в манифесте:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
0 голосов
/ 18 марта 2019

Вы не можете отключить недавнюю кнопку и домашнюю кнопку, но вы можете добиться этого с помощью Window Manager ссылка , в одной строке она создает наложение поверх экрана приложения Android.

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