我希望隐藏平板电脑的系统栏。我搜索了很多但没有成功。我为此添加了一张图片。
我发现了一些解决方案,例如:
View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
但我不知道如何使用它
我知道这是可能的,例如http://forum.xda-developers.com/showthread.php?t=1228046。有人知道如何做到这一点吗?
我希望隐藏平板电脑的系统栏。我搜索了很多但没有成功。我为此添加了一张图片。
我发现了一些解决方案,例如:
View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
但我不知道如何使用它
我知道这是可能的,例如http://forum.xda-developers.com/showthread.php?t=1228046。有人知道如何做到这一点吗?
代码片段:显示/隐藏已root的Android平板电脑状态栏
隐藏:
Process proc = null;
String ProcID = "79"; //HONEYCOMB AND OLDER
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
ProcID = "42"; //ICS AND NEWER
}
try {
proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "service call activity "+ProcID+" s16 com.android.systemui" });
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (1).");
e.printStackTrace();
}
try {
proc.waitFor();
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (2).");
e.printStackTrace();
}
Process proc = null;
try {
proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "am startservice -n com.android.systemui/.SystemUIService" });
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (1).");
e.printStackTrace();
}
try {
proc.waitFor();
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (2).");
e.printStackTrace();
}
service call activity 42 s16 com.android.systemui
жҳҜжңүж•Ҳзҡ„гҖӮдҪҶжҳҜпјҢеҪ“дҪҝз”ЁжӮЁдёҠйқўеҸ‘еёғзҡ„д»Јз Ғж—¶пјҢе®ғж— жі•йҡҗи—ҸзҠ¶жҖҒж Ҹе’ҢеҜјиҲӘж ҸгҖӮжҲ‘йңҖиҰҒдёәжҲ‘зҡ„еә”з”ЁзЁӢеәҸиҝӣиЎҢд»»дҪ•е…¶д»–и®ҫзҪ®/жқғйҷҗжүҚиғҪжү§иЎҢжӯӨж“ҚдҪңеҗ—пјҹ - taymlesssu
权限。我改用了你发布的隐藏/显示命令方法,它可行。http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/。 - taymless系统栏不可隐藏。API中没有允许它的任何内容。这是因为用户始终需要访问主页和返回键,以防应用程序冻结或出现一些用户只需要退出应用的问题。你只能隐藏操作栏。
SYSTEM_UI_FLAG_HIDE_NAVIGATION
。请原谅我的错误。 - CommonsWarevar width = innerWidth;
var height = innerHeight;
我认为这段代码对你有帮助。它虽然不能隐藏平板电脑栏,但可以让你的应用程序适配任何设备。你可以在 Cordova 移动应用程序中使用此代码。(我在 JavaScript 中使用了此代码)
glSurfaceView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
我相信对于所有的安卓设备来说都是一样的。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
我也发现了另一个解决方案,但这当然只是一个名为surelock的单独应用程序。
http://onkarsingh.sys-con.com/node/2184158
编辑:
上述代码无法隐藏平板电脑栏。我将保留我的答案,供那些想要在其他安卓设备中隐藏系统栏的人参考。
我在一款Galaxy Tab上发现了一个技巧,可以将其用作信息亭,具体方法请参考三星开发者指南。
你可以让你的应用程序覆盖锁定系统,并要求返回按钮返回到你的应用程序的起始活动/视图。我已经为一个Web View应用程序完成了这个操作。
@Override
public void onBackPressed() {
//here asking to go back to home page
mWebView.loadUrl(mHomepageUrl);
}
如果要求在锁定系统中保持唤醒状态,请在onCreate方法中实现:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
然后当您两次点击电源按钮时,您会发现您的应用程序已经恢复,状态栏上只有返回按钮是活动的
因此,唯一的方法是重新启动平板电脑(这样您就可以使用经典的锁定系统来打开平板电脑)
如果访客无法访问电源按钮,或者只有您知道解锁代码,则可能会有用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK || keyCode==KeyEvent.KEYCODE_HOME){
startActivity(new Intent(this,MainActivity.class));
return true;
}
return super.onKeyDown(keyCode, event);
}
然后在清单文件中将您的活动设置为启动器活动,以覆盖主页按钮。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
不需要那些要求一百万权限的奇怪的锁屏应用程序。您无需对手机进行Root。