#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.
Комментариев нет:
Отправить комментарий