在为平板电脑开发客户端调查应用程序时,我意识到我必须禁用通知面板,以防万一,以防万一有趣的客户试图成为一个聪明的***。
我正在使用非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上运行
如果我理解你的问题,你正在寻找的是一个单一目的设备,你可以使用startLockTask()
函数实现你想要的,如果设备运行Android 5及更高版本,如此处所述https://developer.android.com/work/cosu.html#emm-solutions
设备所有者必须在setLockTaskPackages中包含您的应用程序包。设置可以进入锁定任务模式的软件包需要由EMM设置您可以调用isLockTaskPermitted来验证您的软件包是否已被setLockTaskPackages列入白名单。您的活动调用
startLockTask()
将用户锁定到当前任务的请求阻止启动其他应用程序,设置和主页按钮要退出,您的活动必须调用stopLockTask()
只能在以前称为startLockTask()
的活动上调用此应用程序时应调用该活动用户面对onResume()
和onPause()
通过使用这里所述的操作,您似乎可以在低于5的Android版本上实现相同的功能:http://www.andreas-schrade.de/2015/02/16/android-tutorial-how-to-create-a-kiosk-mode-in-android/
概观
通过禁用可用于离开应用程序的各种Android功能来实现Kiosk模式。以下功能受到影响:
- 后退按钮
- 主页按钮
- 最近的应用程序按钮
- 电源按钮
- 音量按钮
可能比你想要的更多的工作,但你可以开发一个自定义启动器,以防止退出调查应用程序,或立即在退出启动器上重新启动它,在这种情况下是默认的主屏幕和活动启动界面......这至少会工作在Android的爱人版本上。我希望它可以做很多工作,尤其是“插入”用户可能会找到的所有小小的漏洞和漏洞(进入设置等)