Android Automotive OS 用のブラウザを作成する

[ブラウザ] カテゴリはベータ版です
現時点では、誰でもブラウザを Play ストアの内部テストトラックに公開できます。クローズド テスト、オープンテスト、製品版の各トラックへの公開は、後日許可される予定です。

自動車用の駐車時向けアプリを作成する駐車時向けアプリに Android Automotive OS のサポートを追加するで説明されている要件のほか、このページで説明するブラウザ固有の追加要件がいくつかあります。

アプリをブラウザとしてマークする

アプリがブラウザであることを示すには、エクスポートされた <activity> 要素内に次のようなインテント フィルタを含める必要があります。

<activity ...
    android:exported="true">
  ...
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="http"/>
  </intent-filter>
</activity>

機密データへのアクセスをユーザーがブロックできるようにする

多くの Android デバイスとは異なり、Android Automotive OS の搭載車両は、共有されることの多いデバイスです。ユーザーがパスワードや支払い情報などのセンシティブ データを保護できるように、Android Automotive OS 用に作成されたブラウザは、パスワードや支払い情報を保存できないようにするか、アクセスを許可しないようにする必要があります。ただし、ユーザーがプロファイルのロックを使用してパスワードへのアクセスをブロックできる場合は除きます。認証を行うには、デバイスの認証情報を使用するか、アプリ内に認証システムを構築します。

さらに、センシティブ データを同期する前に、Android Automotive OS 用に構築されたブラウザは、ユーザーに認証を求め、データが車に同期されることを知らせるメッセージを送る必要があります。ユーザーが認証方法を設定していない場合は、センシティブ データの同期時に、デバイス認証情報またはアプリに特有の認証情報を使用して、ユーザーに設定を促すことができます。

認証にデバイス認証情報を使用する

このセクションでは、デバイス認証情報とシステム認証 API を使用して、前述のセンシティブ データの要件を満たす方法について説明します。

デバイス認証情報が設定されているかどうかを確認する

ユーザーがデバイスを PIN、パターン、またはパスワードで保護しているかどうかを調べるには、KeyguardManager::isDeviceSecure メソッドを使用します。

Kotlin

val keyguardManager = context.getSystemService(KeyguardManager::class.java)
val isDeviceSecure = keyguardManager.isDeviceSecure()

Java

KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
boolean isDeviceSecure = keyguardManager.isDeviceSecure();

ロック画面の設定を開く

ユーザーがデバイス認証情報を設定する必要がある場合、その負担を軽減するために、Settings.ACTION_SECURITY_SETTINGS インテントのアクションを使用して、設定アプリ内のセキュリティ画面を開くことができます。

Kotlin

context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))

Java

context.startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS))

ユーザーに認証を求める

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