5

我正在开发平板电脑的应用程序,其中要求是在平板电脑的全屏上运行应用程序。如何隐藏Android平板电脑的底部系统栏

为此,我已经使用下列在我的主要活动代码:

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

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

我已经搜查,但只存在以下解决方案:

  1. 没有API删除或隐藏系统栏中。
  2. 你可以使用一些android应用程序来隐藏系统栏。 (例如: 型Surelock,hidebar等)

我的问题是:

  1. 难道真的不可能在android系统?
  2. 以上可用的应用程序(即surelock,隐藏栏等)也隐藏酒吧。 这意味着他们正在使用某件事来做到这一点。在我们的应用程序中可以使用这个 东西,因此用户不需要分开下载这些 应用程序。

请指导我。

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

+1

我不认为隐藏系统栏是个好主意,因为这是用户实际上可以控制应用程序行为的位置 - 返回按钮/主页按钮。 – hardartcore

+0

http://stackoverflow.com/a/12605313/931982 – stinepike

回答

5

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

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

+0

你是什么意思“只有当你有根访问权限或者你已经创建了任何启动器应用程序时才有可能。” ? –

+1

Android是基于Linux的操作系统。因此,在Linux中,android也有两种类型的用户:1.超级/ root用户2.普通用户。现在,如果您获得root用户访问权限,或者您创建任何应用程序为Go Launcher或类似的东西,那么只有您可以执行您想要的操作 – Shrikant

+0

如何获得我的应用程序的root权限?以及如果我有root权限来隐藏系统栏是可能的? –

9

如果你有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

+0

嗨,答案完全正常工作。但是我怎样才能再次显示酒吧,你可以帮忙吗? – mesopotamia

0

很多在互联网上搜索后,我设法让系统栏隐藏并使用出现在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)选项,虽然这是导致我的设备上的错误:

错误:未找到;没有服务开始。

7

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

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

这一个工作就像一个魅力!谢谢! – NateW

相关问题