【问题标题】:How to hide bottom system bar in android tablet如何在Android平板电脑中隐藏底部系统栏
【发布时间】:2013-04-17 09:58:55
【问题描述】:

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

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

getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

这段代码 sn -p 只删除了标题栏和操作栏。但在平板电脑中,有一个底部系统栏(具有主页和返回按钮)。我也想移除或隐藏这个系统栏。

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

  1. 没有用于移除或隐藏系统栏的 API。
  2. 您可以使用一些安卓应用来隐藏系统栏。 (例如: surelock、hidebar 等)

我的问题是:

  1. 在android中真的不行吗?
  2. 可用应用程序(即surelock、隐藏栏等)也隐藏栏。 这意味着他们正在使用某些东西来做到这一点。可以用这个 我们的应用程序中的某些内容,因此用户不需要下载这些内容 单独应用。

请指导我。

我知道这不是一个好主意。但我的应用仅适用于具有 Android 4.0 或更高版本的平板电脑,并且该平板电脑将只运行这个单一应用,因此我们无需返回并使用主页按钮。这就是我要求使用该应用的原因全屏。

【问题讨论】:

  • 我不认为隐藏系统栏是一个好主意,因为这是用户实际上可以控制您的应用程序行为的地方 - 后退按钮/主页按钮。

标签: android performance android-layout android-widget android-permissions


【解决方案1】:

如果您有 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();
}

See this

【讨论】:

  • 嗨,回答完全可以。但是我怎样才能再次显示该栏,您能帮忙吗?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    除非您具有 root 访问权限,否则这是不可能的。或者,您可以创建一个 launcher application

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

    【讨论】:

    • “只有当您具有 root 访问权限或创建了任何启动器应用程序时才有可能”是什么意思。 ?
    • Android 是基于 Linux 的操作系统。所以在 Linux 中,android 也有两种类型的用户: 1. 超级/root 用户 2. 普通用户。现在,如果您获得 root 用户访问权限,或者您将任何应用程序创建为 Go Launcher 或类似的东西,那么只有您可以做您想做的事情
    • 我怎样才能获得对我的应用程序的根访问权限?如果我有 root 访问权限来隐藏系统栏怎么可能?
    • 请完整阅读:androidcentral.com/root 并隐藏系统栏,我猜你需要为它编写一些命令,我​​以前从未这样做过。
    • @Shrikant 你能发布代码来隐藏启动器应用程序的底部栏吗?我有同样的问题,我的应用程序是启动器
    【解决方案4】:

    在互联网上进行了大量搜索后,我设法让系统栏隐藏并出现在 4.2 设备中:

    隐藏:

    Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");
    

    对于小于 14 的 API,或者使用 79 而不是 42。您可能还需要包含 SET_DEBUG_APP 权限,在这种情况下,您需要使用系统密钥签名或安装在 /system/app/ 目录中的应用程序。

    显示:

    Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");
    

    或者,有些人使用了 -a(而不是 -n)选项,尽管这导致我的设备出现错误:

    错误:未找到;没有服务启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多