在为平板电脑开发客户端调查应用程序时,我意识到我必须禁用通知面板隐藏底部导航,以防万一,那些有趣的客户试图成为一个聪明的***。
我正在使用非root设备,因此使用this中的反射回答不是一个选项。
同时加入
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
会做的伎俩,它也会禁用其他一切。
我首先要求全屏显示该应用只是为了隐藏顶部栏,但这并没有对底部导航栏做任何事情。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
因此我使用了Immersive Full-Screen Mode。它确实隐藏了顶部和底部条形,但当用户向上或向下滑动时,它们会再次出现。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
该设备在 Android 4.4
上运行
答案 0 :(得分:4)
如果我了解您的问题,您正在寻找的是一个单一用途的设备,如果设备运行Android 5及更高版本,您可以使用startLockTask()
功能实现您想要的功能{{3} }
设备所有者必须在setLockTaskPackages中包含您的应用包 设置可以进入锁定任务模式的包 需要由EMM设定 您可以调用isLockTaskPermitted来验证您的包已被setLockTaskPackages列入白名单。 您的活动致电
之间面向用户时应该调用startLockTask()
请求将用户锁定到当前任务 阻止启动其他应用,设置和主页按钮 要退出,您的活动必须致电stopLockTask()
只能在以前称为startLockTask()
的活动上调用 当应用在onResume()
和onPause()
通过使用这里所述的操作,您似乎可以在低于5的Android版本上实现相同的功能:https://developer.android.com/work/cosu.html#emm-solutions
概述
通过禁用各种Android来实现Kiosk模式 可用于离开您的应用程序的功能。以下功能 受影响:
- 后退按钮
- 主页按钮
- 最近的应用按钮
- 电源按钮
- 音量按钮
答案 1 :(得分:0)
可能比你想要的更多的工作,但你可以开发一个自定义启动器,以防止退出调查应用程序,或立即在退出启动器上重新启动它,在这种情况下是默认的主屏幕和活动启动界面...那将至少在Android的爱人版本上工作。我希望它可以做很多工作,尤其是“插入”用户可能会找到的所有小问题和漏洞(进入设置等)