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

时间:2014-10-14 22:41:07

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

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

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

2 个答案:

答案 0 :(得分:2)

您正在寻找的是“信息亭模式”(只是为了帮助您搜索相应的术语)。

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

但存在解决方案:

  1. 撰写家庭应用
  2. 这个解决方案有点弱(但可能符合你的要求?):开发一个“家庭应用程序”(这很容易:只需在你的清单中加入这样的东西:

    <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是最近三星设备的解决方案(警告:对于企业来说,这是一个庞大而复杂的安全解决方案:许多组件可以做很多事情,而且我认为你需要成为一个三星合作伙伴来获取信息亭 - 模式api)
      • 对于motorola:有一个名为EnterpriseHomeScreen的应用程序可用于在kiosk模式下运行您自己的应用程序
    2. 我猜其他构造函数存在其他解决方案,但我不知道它们。


      修改/更新

      使用Android-5.0-Lollipop:screen pinning api允许您在 kiosk-mode 中运行您的应用。 kiosk-mode 的android术语是 screen-pinning-mode

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

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

      如果您的应用是device owner:则系统不会提示用户,您可以在未经确认的情况下进入屏幕固定模式

      用户还可以通过选择以下方式手动为应用启用屏幕固定模式设置&gt;安全&gt;屏幕固定。 (在这种情况下:用户可以通过按住后退和最近按钮退出屏幕固定模式)

答案 1 :(得分:0)

android开发人员的 Set up Single-Purpose Devices Page 已经描述了这些可以让您轻松了解更多内容的内容。