Отключить/запрашивать пароль перед отображением верхней и нижней панели навигации

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

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

И хотя добавление getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY); поможет, оно также отключит все остальное.


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

requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

Поэтому я прибегнул к использованию иммерсивного полноэкранного режима. Он скрывает как верхнюю, так и нижнюю панели, но когда пользователь проводит пальцем вверх или вниз, они снова появляются.

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

Устройство работает на Android 4.4

Я ищу способ полностью отключить их или (в лучшем случае) запрашивать пароль перед повторным показом.


person Alin    schedule 21.02.2018    source источник


Ответы (2)


Если я понял вашу проблему, вы ищете одноцелевое устройство, и вы можете добиться того, чего хотите, используя функцию startLockTask(), если устройство работает под управлением Android 5 и выше, как указано здесь https://developer.android.com/work/cosu.html#emm-solutions

Владелец устройства должен включить пакет (пакеты) вашего приложения в setLockTaskPackages. Задает пакеты, которые могут войти в режим задачи блокировки. Должен быть установлен EMM. Ваша активность вызывает startLockTask() Запрашивает блокировку пользователя в текущей задаче Запрещает запуск других приложений, настроек и кнопки «Домой» Чтобы выйти, ваша активность должна вызывать stopLockTask() Может вызываться только для активности, которая ранее вызывалась startLockTask() Должна вызываться, когда приложение лицом к пользователю между onResume() и onPause()

Кажется, что вы можете добиться того же на версиях Android ниже 5, используя эти действия, как указано здесь: http://www.andreas-schrade.de/2015/02/16/android-tutorial-каксоздатьрежимкиоскавAndroid/

Обзор

Режим киоска реализуется путем отключения различных функций Android, которые можно использовать для выхода из приложения. Затрагиваются следующие функции:

  • Кнопка «Назад»
  • Кнопка «Домой»
  • Кнопка недавних приложений
  • Кнопка питания
  • Кнопки громкости
person regev avraham    schedule 24.02.2018
comment
Звучит почти правильно. Я читаю руководство прямо сейчас и пытаюсь выяснить, поддерживает ли их устройство задачу блокировки. Я вернусь с отзывом. Спасибо. - person Alin; 24.02.2018
comment
По-видимому, это было введено с Android 5, но устройство, над которым я работаю, имеет Android 4.4. - person Alin; 24.02.2018
comment
Благодарю вас! Я принимаю ваш ответ и награждаю вас за ссылку, которую вы разместили! Это действительно очень помогло мне. Я добавлю еще один ответ с моим полным решением. - person Alin; 03.03.2018
comment
Большой! Спасибо :-) - person regev avraham; 03.03.2018

Вероятно, больше работы, чем вы хотите, но вы можете разработать собственный модуль запуска, чтобы предотвратить выход из приложения для опроса, или немедленно повторно запустить его при выходе. Launcher в этом случае является домашним экраном по умолчанию и интерфейсом запуска активности... Это, по крайней мере, сработает. на любовных версиях Android. Я ожидаю, что это будет довольно много работы, особенно для «затыкания» всех маленьких обходных путей и дыр, которые могут найти ваши пользователи (вход в настройки и т. д.)

person C B J    schedule 01.03.2018