Можно ли скрыть системную панель

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

5 ответов

Решение

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

<category android:name="android.intent.category.HOME" />

Остальное все можно отключить.

добавить это в манифесте.

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

внутри onCreate()

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_home);
    View v = findViewById(R.id.home_view);
    v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

где home_view - родительский вид XML-файла.

 @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
            return false;
        }

 public void onWindowFocusChanged(boolean hasFocus)
     {
             try
             {
                if(!hasFocus)
                {
                     Object service  = getSystemService("statusbar");
                     Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                     Method collapse = statusbarManager.getMethod("collapse");
                     collapse .setAccessible(true);
                     collapse .invoke(service);
                }
             }
             catch(Exception ex)
             {
             }
     }

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

getWindow().getDecorView().setSystemUiVisibility(View.GONE);

используйте этот код для Android Box с клавиатурой или пультом дистанционного управления.

Планшет, который будет использоваться, не рутирован

Тогда ты не сможешь это скрыть. Однако вы можете использовать SYSTEM_UI_FLAG_HIDE_NAVIGATION чтобы скрыть это временно, но оно станет видимым, как только пользователь коснется экрана:

Существует ограничение: поскольку элементы управления навигацией так важны, минимальное взаимодействие с пользователем приведет к их немедленному повторному появлению. Когда это происходит, и этот флаг и SYSTEM_UI_FLAG_FULLSCREEN будет очищен автоматически, так что оба элемента появятся одновременно.

Вы можете скрыть панель навигации на Android 4.0 и выше, используя флаг SYSTEM_UI_FLAG_HIDE_NAVIGATION. Этот фрагмент скрывает как панель навигации, так и строку состояния:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions

Смотрите следующее: Скрытие панели навигации

Поместите это в ваш метод onCreate():

requestWindowFeature(Window.FEATURE_NO_TITLE);

РЕДАКТИРОВАТЬ: скрытие строки состояния потребует вашего приложения в полноэкранном режиме или рутированы

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