Как отключить навигационную панель в Android LockScreen App, например, в CM Locker и на экране блокировки OS8

Я попытался установить systemUIView(View.GONE) и использовать полноэкранный режим с погружением. Но пользователи всегда могут вернуть панель навигации, коснувшись нижней части экрана. Приложения, о которых я упоминал выше, могут скрыть это без рута или установки запуска по умолчанию.

2 ответа

Решение

Хорошо, я наконец нашла sulotion и вот как это делается:

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

    Посмотреть decorView = getWindow(). GetDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions);

  2. Затем добавьте окно системных ошибок с помощью WindowManger и наложите его поверх чего-либо

Вы можете разместить этот необязательный вид где угодно, но если вы хотите сделать это, пока пользователи блокировали экран, добавьте этот флаг:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

И вуаля

Ну, я никогда не достигал этого, но кажется, что вам нужно будет установить некоторые другие флаги, чтобы получить такой вид:

При использовании флага SYSTEM_UI_FLAG_IMMERSIVE он скрывает системные панели в зависимости от того, какие другие флаги пользовательского интерфейса вы установили (SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_FULLSCREEN или оба). Когда пользователь проводит внутрь в области системных панелей, системные панели снова появляются и остаются видимыми.

Вот фрагмент кода, который вы можете использовать для установки этих флагов:

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    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 // hide nav bar
            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

Для получения дополнительной информации перейдите по ссылке Использование полного полноэкранного режима с веб-сайта разработчика Android.

Надеюсь, это поможет.

Другие вопросы по тегам