Так что я пытаюсь заставить одноразовое выделенное приложение + устройство работать в режиме киоска + автозапуск.Само приложение встроено в Nativescript (с Angular), поэтому не является родным Java, однако это все еще обрабатывается через приемник администратора и т. Д. Как обычно.
Когда мы используем adb
, чтобы установить владельца устройства, режим киоскаработает должным образом.
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>
Когда я выполняю GET на отдельном устройстве через AMAPI, он показывает ..
{
"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
, однако я пытался найти примеры, которые я нашел как в этой статье о среднем киоске , так и в реальных примерах политики киосков Google .
На основете примеры, которые я пробовал использовать в различных receiverActivity
альтернативных форматах, но до сих пор не радуются:
"receiverActivity": "com.domain.app/.DeviceAdminReceiver",
"receiverActivity": "com.domain.app",
"receiverActivity": "com.domain.app/.com.domain.app.DeviceAdminReceiver",
Поэтому мой вопрос: Почему я не могу включить режим киоска Android для работы с моей политикой, но этоks нормально с ADB?
Полуотносительно, Я не могу использовать тестовые треки Google Play при тестировании моих возможных разрешений, поэтому мне приходится вносить изменения в трек Prod, что делает мою разработкуцикл довольно длинный / трудный.