Intereting Posts
Событие click на круговой диаграмме в android Android Maps – метод animateCamera () не работает должным образом Удалить файл после совместного использования с помощью намерения Как анализировать данные JSON с помощью GSON? И помещаем его в ArrayList Изменение ConnectionTimeout для переоснащения OkHttpClient во время выполнения Android studio – Выполнение не выполнено для задачи: app: preDexDebug ' TextView не подходит для экрана Android – Как эффективно загружать большое количество текста в TextView? Поведение браузеров мобильных приложений с сеансами Google и выбор учетной записи Сделайте анимацию Android более плавной, когда во время анимации отображается клавиатура Выполнение не выполнено для задачи ': app: transformClassesWithDexForDebug' при внедрении Google для Android Как добавить вид программы в RelativeLayout? Google+ signin – handleSignInResult возвращает значение false после настройки кнопки signin Как обфускать библиотеку Android (файл .jar) с помощью Proguard в Eclipse Получить имя пакета для намерения share share

Скрытие пользовательского интерфейса системы на Lollipop

У меня есть приложение режима киоска, которое скрывает все следы системного интерфейса (панель уведомлений и кнопки навигации). В версиях Android pre-Lollipop следующее работает отлично (как root):

service call activity 42 s16 com.android.systemui 

В Lollipop, однако, это делает экран полностью черным, а также скрывает системный интерфейс. По этой причине он не может быть использован.

Кто-нибудь знает об обходном пути для этого?

Я попробовал решение Device Owner / Admin для Screen Pinning, но, к сожалению, это неприемлемо, потому что оно полностью не скрывает системный интерфейс, но оставляет обратную кнопку видимой при прокрутке в нижней части экрана.

    Если устройство укоренилось, вы можете отключить systemui pm disable-user com.android.systemui а затем метод владельца устройства работает нормально.

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

     <?xml version='1.0' encoding='utf-8' standalone='yes' ?> &device-owner package="com.mycompany" name="*mycompany" /> 

    Я использовал установленную ниже настройку, чтобы избавиться от системного интерфейса в Android Marshmallow

     final int flags = 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; 

    И OnCreate у меня есть

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_instructions); getWindow().getDecorView().setSystemUiVisibility(flags); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

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

     /* Hides Navigation bar again if user swipes it visible */ @Override protected void onResume() { getWindow().getDecorView().setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { getWindow().getDecorView().setSystemUiVisibility(flags); } }); super.onResume(); Log.i(TAG,"Activity Life Cycle : onResume : MainActivity Resumed"); } 

    Это будет кратковременно отображать клавишу на экране и скрывать ее. Только проблема в том, что если вы открываете новую активность поверх операции Pinned. Он не получает никаких указаний onResume.

    Вероятно, вы хотите использовать режим «Погружения». Здесь вы найдете всю необходимую информацию

    У вас есть пример для всех версий Android!

    У меня была такая же проблема. Этот код будет работать для 4.4 и Lollipop (Tested). Должен работать и на других версиях.

      /** * Uses Root access to enable and disable SystemUI. * @param enabled Decide whether to enable or disable. */ public void setSystemUIEnabled(boolean enabled){ try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes("pm " + (enabled ? "enable" : "disable") + " com.android.systemui\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } } 

    Конечно, это требует

    Я нашел это другое решение, и он работает на android 5.0

     private void hideNavigationBar(){ try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm disable com.android.systemui\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ////////////////////////////////////// } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }