我正在开发一款仅适用于平板电脑的应用程序,其要求是在平板电脑的全屏幕上运行应用程序。
为此我在主要活动中使用了以下代码:
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
此代码段仅删除标题栏和操作栏。但在平板电脑中,有一个底部系统栏(有主页和后退按钮)。我也想删除或隐藏这个系统栏。
我搜索过,但只有以下解决方案:
我的问题是:
请指导我。
我知道这不是一个好主意。但我的应用程序仅适用于安装了Android 4.0或更高版本的平板电脑,平板电脑只能运行这个应用程序,因此我们无需返回并使用主页按钮。这就是为什么我的要求是使用该应用程序在全屏幕。
答案 0 :(得分: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();
}
答案 1 :(得分: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);
答案 2 :(得分:5)
除非您具有root访问权限,否则这是不可能的。或者,您可以创建 launcher application
。
否则,隐藏系统/导航栏将超出您的应用程序的范围。
答案 3 :(得分: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)选项,虽然这会导致我的设备出错:
错误:未找到;没有服务开始。