android - 如何构建将用户操作限制在 Android 上的单个应用程序的软件?

标签 android root system-administration kiosk-mode android-screen-pinning

我想为 android 构建一个应用程序并确保用户只能使用这个应用程序。 (即用户不应该能够打开或安装任何其他应用程序。)

是否可以在 Android 设备上强制执行此类限制?如果是,我应该从哪里开始?

最佳答案

您正在寻找的是所谓的“信息亭模式”(只是为了帮助您在谷歌上搜索适当的术语)。

标准的 android api 中没有这样的东西(至少......现在还没有:请参阅编辑)。用户始终可以按主页按钮返回主页应用程序。

但解决方案是存在的:

  1. 编写家庭应用

这个解决方案有点弱(但可能符合您的要求?):开发一个“家庭应用程序”(这很容易:只需在您的 list 中放入这样的东西:

<activity android:name="MyCustomHome"
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

有了这个,当用户按下主页按钮时:他将不得不选择要使用的主页应用程序,如果用户决定将您的应用程序设为默认主页:他将始终在按下主页按钮时回到您的应用程序按钮。

缺点:主页按钮不是退出当前应用程序的唯一方法,因此该解决方案不会真正阻止用户(例如:在三星上,从上到下滑动总是显示工具栏.. . 并且用户可以从那里做任何事情)

  1. 使用特定的构造函数扩展:

    • samsung-knox是最近三星设备的解决方案(警告:它是一个庞大而复杂的企业安全解决方案:许多组件可以做很多事情,我认为您需要成为三星合作伙伴才能访问 kiosk-mode api)
    • 对于摩托罗拉:有一个名为 EnterpriseHomeScreen 的应用程序可用于在信息亭模式下运行您自己的应用

我想其他构造函数存在其他解决方案,但我不知道它们。


编辑/更新

使用 Android-5.0-Lollipop:screen pinning api允许您以kiosk 模式 运行您的应用程序。 kiosk-mode 的 android 术语是screen-pinning-mode

要使您的应用在屏幕固定模式 下工作,您必须使用 Activity.startLockTask (和 Activity.stopLockTask() 退出屏幕固定模式)。

默认情况下,用户必须批准屏幕固定模式(当您的应用调用 startLockTask 时将提示弹出窗口)。

如果您的应用是 device owner : 然后用户将不会收到提示,您可以进入 screen-pinning-mode 而无需确认。

用户还可以通过选择:设置 > 安全 > 屏幕固定,手动为应用启用屏幕固定模式。 (在这种情况下:用户可以通过同时按住“返回”和“最近”按钮来退出屏幕固定模式)

关于android - 如何构建将用户操作限制在 Android 上的单个应用程序的软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371607/

相关文章:

android - 将图像的字节数组保存到文件

android - gridview的锁定滚动

android - 具有自定义字体的 AlertDialogPro

html - 为元素站点定义根文件夹

macos - 适用于 mac osx 的字体与默认 xterm (X11) 字体一样可读且紧凑

gcc - Netbeans C/C++ 7.2 -std=C++11 无法被 gcc v4.6 或更低版本识别

android - 如何在 RecyclerView 中对整个内容进行缩放?

python - 使用适当的权限运行 pycharm 和 scapy

android - 在 Android 中禁用和启用 Google Play 系统应用程序或第 3 方应用程序

linux - Linux 上已安装程序的文件位置有什么意义?