Как создавать браузеры для Android Automotive OS

Категория "Браузеры" находится на этапе бета-тестирования
Сейчас любой разработчик может публиковать браузеры в каналах внутреннего тестирования в Google Play. Публиковать версии для закрытого и открытого тестирования, а также рабочие версии можно будет позже.

Помимо требований, описанных в статьях Как создать приложение для автомобилей, которое можно использовать, когда автомобиль припаркован и Как добавить поддержку Android Automotive OS в приложение для автомобилей, которое можно использовать, когда автомобиль припаркован, существуют дополнительные требования, которые применяются только к браузерам. Они описаны на этой странице.

Как указать, что ваше приложение является браузером

Чтобы указать, что ваше приложение является браузером, оно должно содержать фильтр интентов, например следующий, в экспортированном элементе <activity>:

<activity ...
    android:exported="true">
  ...
  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
   ...
    <category android:name="android.intent.category.APP_BROWSER"/>
  </intent-filter>
</activity>

Подробнее android.intent.category.APP_BROWSER…

Как разрешить пользователям блокировать доступ к данным деликатного характера

В отличие от многих устройств Android, автомобили с Android Automotive OS часто используются несколькими людьми. Чтобы пользователи могли защищать свои данные деликатного характера, такие как пароли и платежные данные, браузеры, созданные для Android Automotive OS, не должны сохранять пароли или платежные данные и предоставлять к ним доступ, если пользователь не может заблокировать доступ к паролям с помощью блокировки профиля. Для аутентификации можно использовать учетные данные устройства или создать собственную систему аутентификации в приложении.

Кроме того, перед синхронизацией данных деликатного характера браузеры, созданные для Android Automotive OS, должны запрашивать у пользователя аутентификацию и показывать сообщение о том, что его данные синхронизируются с автомобилем. Если у пользователя не настроен ни один способ аутентификации, вы можете предложить ему сделать это при попытке синхронизировать данные деликатного характера, используя учетные данные устройства или учетные данные, относящиеся к вашему приложению.

Использовать учетные данные устройства для аутентификации

В этом разделе рассказывается, как использовать учетные данные устройства и системные API аутентификации, чтобы соответствовать требованиям к данным деликатного характера, описанным выше.

Проверьте, заданы ли учетные данные устройства

Чтобы определить, защищено ли устройство пользователя PIN-кодом, графическим ключом или паролем, можно использовать метод KeyguardManager::isDeviceSecure.

val keyguardManager = context.getSystemService<KeyguardManager>()
val isDeviceSecure = keyguardManager?.isDeviceSecure == true

Как открыть настройки заблокированного экрана

Чтобы упростить пользователям настройку учетных данных устройства, вы можете открыть экран "Безопасность" в приложении "Настройки", используя действие намерения Settings.ACTION_SECURITY_SETTINGS.

context.startActivity(
    Intent(Settings.ACTION_SECURITY_SETTINGS)
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
)

Предложить пользователю пройти аутентификацию

Чтобы запросить у пользователя аутентификацию, вы можете использовать API BiometricPrompt, как описано в разделе Как показать диалоговое окно биометрической аутентификации.