android - 管理 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 应用程序的设备策略吗?
解决方案
请注意,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
}
'''