是否可以隐藏系统栏

use*_*602 5 android android-4.2-jelly-bean

我创建了一个启动器,以便在内部应用程序中使用它.出于某些安全原因,我想隐藏系统栏(访问参数和访问已安装应用程序的ordrer).但我不知道该怎么做.将使用的平板电脑不是root.你能帮我吗?

Piy*_*hra 13

你不能隐藏它,但你可以禁用它,除了家.为此,您可以将您的应用程序作为主类别,并让用户选择.

<category android:name="android.intent.category.HOME" />
Run Code Online (Sandbox Code Playgroud)

休息都可以禁用.

在清单中添加此项.

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
Run Code Online (Sandbox Code Playgroud)

在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);
Run Code Online (Sandbox Code Playgroud)

其中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)
             {
             }
     }
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以隐藏我使用此代码隐藏的底栏:

getWindow().getDecorView().setSystemUiVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

将此代码用于带键盘或遥控器的android盒子.


Ahm*_*mad 5

将使用的平板电脑不是root

然后你无法隐藏它.但是,您可以使用SYSTEM_UI_FLAG_HIDE_NAVIGATION 它暂时隐藏它,但一旦用户触摸屏幕就会显示它:

存在一个限制:因为导航控件非常重要,所以用户交互最少会导致它们立即重新出现.发生这种情况时,这个标志SYSTEM_UI_FLAG_FULLSCREEN都将自动清除,以便两个元素同时重新出现.

  • 这是对的.不允许应用程序执行可能用作针对用户的拒绝服务攻击的操作,并阻止用户访问"主页"或"最近"按钮符合条件. (3认同)