使用Android Management API策略时,Android Kiosk模式无法正常工作
作者:互联网
所以我试图让一个专用的应用程序设备在自助服务终端模式下自动启动.应用程序本身是使用Nativescript(使用Angular)构建的,因此不是本机Java,但是仍然可以通过管理接收器等正常处理.
当我们使用adb设置设备所有者时,kiosk模式按预期工作.
adb shell dpm set-device-owner com.domain.app/.DeviceAdminReceiver
当我们使用Android管理策略注册设备并自动安装时,从不正确启动自助服务终端模式.
{
"name": "enterprises/LC00mpaqaj/policies/policy1",
"version": "12",
"applications": [
{
"packageName": "com.domain.app",
"installType": "FORCE_INSTALLED",
"lockTaskAllowed": true,
"defaultPermissionPolicy": "GRANT"
}
],
"persistentPreferredActivities": [
{
"receiverActivity": "com.domain.app/.DeviceAdminReceiver",
"actions": [
"android.intent.action.MAIN"
],
"categories": [
"android.intent.category.HOME",
"android.intent.category.DEFAULT"
]
}
],
"dataRoamingDisabled": true,
"kioskCustomLauncherEnabled": true
}
AndroidManifest.xml – 与管理员接收器相关的部分
<receiver
android:name=".DeviceAdminReceiver"
android:lockTaskMode="if_whitelisted"
android:description="@string/admin_description"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/admin_permissions" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
当我通过AMAPI对单个设备进行GET时,它显示..
{
"name": "enterprises/LC00mpaqaj/devices/3e26eac6be79d049",
"managementMode": "DEVICE_OWNER",
"state": "ACTIVE",
"appliedState": "ACTIVE",
"policyCompliant": true,
"nonComplianceDetails": [
{
"settingName": "persistentPreferredActivities",
"nonComplianceReason": "INVALID_VALUE",
"packageName": "com.domain.app"
}
],...
所以它似乎不喜欢persistentPreferredActivities,但是我一直在玩这个在medium kiosk article上找到的例子,以及实际的google kiosk policy examples.
基于这些例子,我尝试使用各种receiverActivity替代格式,但仍然没有乐趣:
"receiverActivity": "com.domain.app/.DeviceAdminReceiver",
"receiverActivity": "com.domain.app",
"receiverActivity": "com.domain.app/.com.domain.app.DeviceAdminReceiver",
所以我的问题是:为什么我不能使用android kiosk模式来处理我的策略,但它与ADB一起工作正常?
半相关,I can’t use google play test tracks测试我可能的解决方案,所以我不得不推动改变prod轨道,这使我的开发周期相当长/艰巨.
解决方法:
我不是Android Management API专家,但您是否尝试过没有kioskCustomLauncherEnabled参数?在我使用它的测试中,它启动了Google自己的Kiosk应用程序,可能会阻止您的活动启动.
我的两分钱:)
标签:android,kiosk,device-admin,cosu,android-management-api 来源: https://codeday.me/bug/20190627/1302793.html