Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Как убрать все панели в приложении под android 4.0.4 (ICS)?

#android


Приложение должно показываться на полном экране без панелей. Для этого прописываю
в манифесте android:theme="@android:style/Theme.NoTitleBar.Fullscreen" для всего приложения.
В android 4.1.2 все панели убираются.
Когда ставлю то же самое приложение на 4.0.4. Верхняя панель (как я понимаю, она
принадлежит activity) убирается, а нижняя(системная) остается.
Можно ли скрыть системную панель в этой версии андроида? Можно ли сделать это без root'а?
Обновление: нашла следующие варианты:
//Скрывает значки на панели, вернее превращает их в маленькие точки, панель не скрывает
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE );
//Судя по описанию должна скрывать панель, но у меня, опять-таки не работает
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
//То же самое, тоже не работает
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);

Решения пока нет.    


Ответы

Ответ 1



По-моему нельзя. Была даже статья на эту тему на хабре: Kiosk Mode приложения на Android.

Ответ 2



Как это нельзя, очень даже можно - перед подключением лейаута в активити нужно прописать пару строк requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

Ответ 3



Оказывается, убирается или нет status bar зависит от значения параметра tv.hideStatusBar.enable в файле build.prop. Если его значение равняется true, то панель убирается просто установкой темы с Fullsceen или другими стандартными способами, если же значение false, то не убирается, а максимум сворачивается в точки с помощью View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE ); Поменять значение tv.hideStatusBar.enable без root доступа не представляется мне возможным. Получив права суперпользователя, я изменила значение с помощью приложения build.prop Editor. Теперь все работает как нужно. Выполнение Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 79 s16 com.android.systemui"}); у меня не сработало. Появляется предупреждение, что приложение потребовало root-права, но панель не убирается. Использование скрытого api: SystemProperties.set("tv.hideStatusBar.enable", "true"); тоже не помогло, просто ничего не происходит. Хотя, может быть для принятия изменений требуется перезагрузка. Во всяком случае, сторонний редактор перезагрузку для применения потребовал. Но, может быть, нужны еще какие-то особые права. Например, системные приложения могут убирать status bar "на лету". Например системная Activity PositionSetting поступает следующим образом: protected void onPause() { SystemProperties.set("vplayer.hideStatusBar.enable", "false"); super.onPause(); } protected void onResume() { SystemProperties.set("vplayer.hideStatusBar.enable", "true"); super.onResume(); } тем самым скрывая панель только на время своего исполнения. Однако, выполнение того же самого в моем приложении не дает никакого эффекта.

Ответ 4



Можно, но с дополнительным хаком. Есть программу Hide Status bar http://ppareit.github.com/HideBar/

Ответ 5



Нижнюю панель (не верхнюю шапку) - там где находятся кнопки home/menu/back и проч. невозможно убрать. Эти кнопки - фактически единственные кнопки управления приложением (особенно home) - они фиксированы на уровне оси и программным способом их убрать невозможно. Как кое-кто мог заметить - эти кнопки не появляются только на устройствах с физическими кнопками home/menu/back.

Комментариев нет:

Отправить комментарий