Режим Android Kiosk не работает при использовании Политики API управления Android - PullRequest
4 голосов
/ 15 марта 2019

Так что я пытаюсь заставить одноразовое выделенное приложение + устройство работать в режиме киоска + автозапуск.Само приложение встроено в 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, что делает мою разработкуцикл довольно длинный / трудный.

1 Ответ

3 голосов
/ 15 марта 2019

Я не эксперт по API управления Android, но вы пробовали без параметра kioskCustomLauncherEnabled?В тесте, который я проводил с ним, он запускает собственное приложение Google Kiosk, возможно, препятствует запуску вашей активности.

Мои два цента:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...