Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android平板电脑中隐藏底部系统栏_Android_Performance_Android Layout_Android Widget_Android Permissions - Fatal编程技术网

如何在android平板电脑中隐藏底部系统栏

如何在android平板电脑中隐藏底部系统栏,android,performance,android-layout,android-widget,android-permissions,Android,Performance,Android Layout,Android Widget,Android Permissions,我正在开发一个仅适用于平板电脑的应用程序,其要求是在平板电脑的全屏上运行应用程序 为此,我在主要活动中使用了以下代码: getWindow().requestFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 此代码段仅删除标题栏和操作栏。但在平板电脑中,有一个底

我正在开发一个仅适用于平板电脑的应用程序,其要求是在平板电脑的全屏上运行应用程序

为此,我在主要活动中使用了以下代码:

getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
此代码段仅删除标题栏和操作栏。但在平板电脑中,有一个底部的系统栏(有home和back按钮)。我还想删除或隐藏这个系统栏太

我已经搜索过了,但只有以下解决方案:

  • 没有API可以删除或隐藏系统栏
  • 您可以使用一些android应用程序隐藏系统栏。(例如: 安全锁、隐藏器等)
  • 我的问题是:

  • 在android中真的不可能吗?
  • 以上可用应用程序(即surelock、隐藏栏等)也隐藏栏。 这意味着他们正在利用某些东西来实现这一目标。你能用这个吗 我们应用程序中的某些内容,因此用户不需要下载这些内容 单独应用。
  • 请引导我


    我知道这不是个好主意。但我的应用程序只适用于Android 4.0或更高版本的平板电脑,平板电脑将只运行这一个应用程序,因此我们不需要返回并使用home按钮。这就是为什么我要求全屏使用该应用程序的原因

    除非您具有root访问权限,否则这是不可能的。或者,您可以创建一个
    启动程序应用程序


    否则,隐藏系统/导航栏将超出应用程序的范围。

    如果您具有root访问权限,则可以以其他方式使用此代码,这是不允许的

    try{
        //REQUIRES ROOT
        Build.VERSION_CODES vc = new Build.VERSION_CODES();
        Build.VERSION vr = new Build.VERSION();
        String ProcID = "79"; //HONEYCOMB AND OLDER
    
        //v.RELEASE  //4.0.3
        if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){
            ProcID = "42"; //ICS AND NEWER
        }
    
    
    
        //REQUIRES ROOT
        Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79
        proc.waitFor();
    
    }catch(Exception ex){
        Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
    }
    

    在互联网上进行了大量搜索之后,我成功地通过以下方法将系统栏隐藏并显示在4.2设备中:

    要隐藏:

    Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");
    
    如果API小于14,则使用79而不是42。您可能还需要包括SET_DEBUG_APP权限,在这种情况下,您需要使用系统密钥对应用程序进行签名或将其安装在/system/APP/目录中

    显示:

    Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");
    
    或者,有些人使用了-a(而不是-n)选项,尽管这会在我的设备上导致错误:


    错误:未找到;未启动任何服务。

    从Android API 4.0及更高版本,您可以使用以下代码隐藏底部系统栏

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
    

    我认为隐藏系统栏不是一个好主意,因为这是一个用户实际上可以控制应用程序行为的地方——后退按钮/主页按钮。你所说的“只有当你拥有根访问权限或创建了任何启动应用程序时才有可能”是什么意思?Android是一个基于Linux的操作系统。和Linux一样,android也有两种类型的用户:1。超级/根用户2。普通用户。现在,如果您获得root用户访问权限,或者您创建任何应用程序作为Go Launcher或类似的东西,那么只有您可以做您想做的事情我可以拥有对我的应用程序的root访问权限吗?如果我有根权限隐藏系统栏,那怎么可能呢?请仔细阅读:隐藏系统栏,我想你需要为它编写一些命令,我以前从来没有这样做过。@Shrikant你能发布代码来隐藏启动器应用程序的底部栏吗。我有同样的问题,我的申请是Launchhi,答案完全正常。但是我怎样才能再把吧台给你看你能帮忙吗?