首页 > 解决方案 > 管理 API 错误:persistentPreferredActivities 4

问题描述

我正在构建一个 Android KIOSK 应用程序,并尝试通过提供设备策略来使用 Android Management API 启用 Kiosk 模式。

我的政策 json 是:

    {
        "keyguardDisabled": true,
        "applications": [
                {
                  "packageName": "my.own.app",
                  "installType": "KIOSK",
                  "defaultPermissionPolicy": "GRANT"
                }
        ]
    }

有趣的是,该政策来自官方 API 的示例,所以我认为这可行。无论如何,总是得到这个错误:

错误信息 persistentPreferredActivity 4

只是谷歌搜索并没有给我任何解决这个问题的线索。

当我设置installType为 KIOSK 时,我总是收到此错误。我的线索是我的策略缺少 PersistentPreferredActivity json 块。我已经添加了它,我仍然得到这个错误。有趣的是,有一条注释:“注意:要设置信息亭,请使用 InstallType 到 KIOSK,而不是使用持久的首选活动。” 所以我们不需要 PersistentPreferredActivity。但我不明白那个错误。

继续。我试图通过将 kioskCustomLauncherEnabled 设置为 true 来创建 kiosk 模式。我设置了“installType”:“AVAILABLE”,所以我可以从 Android Studio 运行应用程序。我成功地在设备上应用了策略。当我尝试打开应用的 Kiosk Activity 时,出现“应用不是设备所有者”Toast。

基本上,我需要的可能是lockTaskAllowed修饰符,但已被弃用。

有人可以帮我制定 KIOSK 应用程序的设备策略吗?

标签: androidkioskkiosk-modedevice-policy-managerandroid-management-api

解决方案


请注意,KIOSK 模式仅适用于完全托管的设备。对于要完全管理的设备,必须使用包含注册令牌的 QR 码或其他受支持的注册方法从设置向导进行配置。

为了能够在策略中使用该应用程序,它必须在 Google Play 中可用。它应该是公共应用程序或私有应用程序,可供您使用 Android 管理 API 管理的企业 (ID) 使用。

以下是“installType”:“KIOSK”和 kioskCustomLauncherEnabled 之间的区别:

“installType”:“KIOSK”用于将单个应用固定到屏幕上

policy_json = '''
{
  "applications": [
  {
    "packageName": "com.google.android.gm",
    "installType": "KIOSK",
    "defaultPermissionPolicy": "GRANT"
  }
],
  "debuggingFeaturesAllowed": true
}
'''

现在,如果您想在 KIOSK 模式下使用一组应用程序,您可以使用 kioskCustomLauncherEnabled

policy_json = '''
{
  "applications": [
    {
    "packageName": "com.android.chrome",
    "installType": "FORCE_INSTALLED",
    "defaultPermissionPolicy": "GRANT"
  },
  {
    "packageName": "com.google.android.gm",
    "installType": "FORCE_INSTALLED",
    "defaultPermissionPolicy": "GRANT"
  }
],
  "debuggingFeaturesAllowed": true,
  "kioskCustomLauncherEnabled": true,
  "keyguardDisabled": true
}
'''

推荐阅读