如何禁用安卓锁屏应用程序中的导航栏,如CM储物柜和OS8锁定屏幕
我试图设置systemUIView(View.GONE)并使用Immersive全屏模式。但用户总是可以通过触摸屏幕底部来获取导航栏。我上面提到的应用程序能够隐藏它没有根或设置默认启动程序。如何禁用安卓锁屏应用程序中的导航栏,如CM储物柜和OS8锁定屏幕
好吧,我发现了一个sulotion终于,这里是它如何做的:
-
使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY隐藏导航栏作为跟随,你可以把代码中的onResume您的活动
观decorView = getWindow()。getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions);
然后,使用WindowManger添加一个系统错误窗口,并在其上重合寄托都顶部
,你可以把这个unescapable视图任何你喜欢的,但如果你想这样做,而用户锁定屏幕,添加此标志:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
的Et瞧
嗯,我从来没有实现这一点,但它似乎你将需要设置一些其他的标志来获得这样的观点:当您使用SYSTEM_UI_FLAG_IMMERSIVE标志
,它隐藏的系统吧根据您已设置的其他UI标志(SYSTEM_UI_FLAG_HIDE_NAVIGATION,SYSTEM_UI_FLAG_FULLSCREEN或两者)。当用户在系统栏区域向内滑动时,系统栏会重新出现并保持可见状态。
这里是一个片段,您可以使用设置这些标志:
// This snippet hides the system bars.
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
欲了解更多信息,请从Android开发者网站查询Using Immersive Full-screen Mode。
希望得到这个帮助。
感谢您的帮助,我已经试过这是我说的。这实际上可以隐藏导航栏,但当用户点击屏幕底部时,它会重新显示 – user1659006
@ user1659006哦对不起,我以为你只有一个标志(** SYSTEM_UI_FLAG_IMMERSIVE **)启用。 – WannaGetHigh
你是一个天才男人... – viv