Как создавать браузеры для 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

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

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

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

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

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