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)
)

ユーザーに認証を求める

生体認証ダイアログを表示するで説明されているように、ユーザーに認証を求めるには、BiometricPrompt API を使用します。