1

在为平板电脑开发客户调查应用程序时,我意识到我必须禁止通知面板被拉出并隐藏底部导航以防万一,因为所有那些有趣的客户都想成为一个聪明的 ***。

我正在使用无根设备,因此不能选择使用像this answer这样的反射。

虽然添加 getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY); 可以解决问题,但它也会禁用其他所有功能。


我首先要求应用程序全屏显示,只是为了隐藏顶部栏,但这对底部导航栏没有任何作用。

requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

因此,我求助于使用沉浸式全屏模式。它确实隐藏了顶部和底部栏,但是当用户向上或向下滑动时,它们会再次出现。

@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上运行

我正在寻找一种完全禁用它们的方法,或者(最好的情况下在再次显示它们之前要求输入密码

4

2 回答 2

4

如果我理解您的问题,您正在寻找的是单一用途startLockTask()的设备,如果设备运行 Android 5 或更高版本,您可以使用该功能实现您想要的功能,如此处所述https://developer.android.com/work/ cosu.html#emm-解决方案

设备所有者必须在 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/

概述

Kiosk 模式是通过禁用可用于离开您的应用的各种 Android 功能来实现的。以下功能受到影响:

  • 后退按钮
  • 主页按钮
  • 最近的应用程序按钮
  • 电源按钮
  • 音量按钮
于 2018-02-24T10:09:16.260 回答
0

可能比你想要的更多的工作,但你可以开发一个自定义启动器来防止退出调查应用程序,或者在退出启动器时立即重新启动它,在这种情况下是默认的主屏幕和活动启动界面......这至少可以工作在 Android 的情人版本上。不过,我希望它会做很多工作,尤其是要“塞住”用户可能会发现的所有小问题和漏洞(进入设置等)

于 2018-03-01T12:22:03.103 回答