Android 6 以降、Wi-Fi サービス プロバイダとパケット アナライザは、ネットワーク リクエストの Wi-Fi スタックを介してデバイスの出荷時 MAC アドレスを取得できなくなっています。Android 10 以降には追加の制限が適用され、特権の権限レベルを付与されたアプリがデバイス ID にアクセスすることはできません。これにより、次のようなデバイス ID が保護されます。
- テレフォニー IMEI 番号、MEID 番号、ESN 番号、IMSI 番号。
- ビルド、SIM、USB のシリアル番号。
デバイス ID にアクセスできるユーザー
すべての Android 10 デバイスでは、ターゲットが Android 9 以前のアプリであっても、デバイス ID へのアクセスが制限されています。デバイス ID にアクセスできるアプリとユーザーは次のとおりです。
- デフォルトの SMS アプリ。
Manifest.permission
クラスのREAD_PRIVILEGED_PHONE_STATE
権限が付与され、かつprivapp-permission.xml
ファイルで許可リストに登録されているアプリ。priv-app
ディレクトリにも読み込む必要があります。- UICC の携帯通信会社の権限で定義されている携帯通信会社の権限があるアプリ。
Manifest.permission
クラスのREAD_PHONE_STATE
権限が付与されたデバイス所有者またはプロファイル所有者(許可リスト登録は不要)。
特権パッケージのアクセス
デバイス ID にアクセスするにはパッケージに権限が必要です。Manifest.permission
クラスの
READ_PRIVILEGED_PHONE_STATE
権限が付与され、privapp-permission.xml
ファイルで許可リストに登録されている必要があります。許可リストのプロセスの詳細については、特権の許可リストへの登録をご覧ください。
非特権パッケージの一意の ID を取得する方法については、一般的なユースケースと使用すべき識別子をご覧ください。
制限されたデバイス ID とランダム MAC アドレス
デバイス ID をさらに制限するために、Android 10 を搭載したすべてのデバイスは、プローブおよび関連付けられたリクエストの両方に対してデフォルトでランダム MAC アドレスを送信します。ランダム MAC アドレスは SSID ごとに異なる必要があります。クライアント モード、ソフトウェア アクセス ポイント(AP)、Wi-Fi Direct のユースケースでは、デバイスの出荷時 MAC アドレスを使用しないでください。特権アプリではない一般公開 API に対しては、非表示のままにする必要があります。出荷時の MAC アドレスを返される必要がある特権アプリには、LOCAL_MAC_ADDRESS
権限が必要です。
ユーザーは、各 SSID に割り当てられているデフォルトのランダム MAC アドレスを保持することもできます。 この項目は、[設定] > [ネットワークの詳細] の [プライバシー] で確認できます。ランダム MAC アドレスの取得について詳しくは、ランダム MAC アドレスをご覧ください。
図 1. [ネットワークの詳細] の [プライバシー] にランダム化された MAC アドレスが表示される。
デバイス ID API を呼び出すアプリ
デバイス ID API を呼び出すアプリは、Android 10 の要件を満たしている必要があります。要件を満たしていない場合、デバイス ID にアクセスしようとすると、次のような結果になります。
- Android 10 をターゲットとするアプリ
- デバイス ID API から
SecurityException
がスローされます。 - Android 9 以前をターゲットとするアプリ
READ_PHONE_STATE
権限がある場合は、null
レスポンスまたはプレースホルダ データが返されます。- この権限がない場合、デバイス ID API は
SecurityException
をスローして、呼び出されたメソッドの名前と、呼び出し元アプリがリクエスト対象の ID にアクセスするための要件を満たしていないことを示します。
不変のデバイス ID について詳しくは、再設定不可能なデバイス ID と一意の ID に関するおすすめの方法をご覧ください。
テスト
デバイスのシリアル番号、該当する場合は IMEI または MEID、SIM のシリアル番号、および登録者 ID にアプリがアクセスできないようにする必要があります。これらの ID にアクセスする権限を持つアプリは、デバイス ID にアクセスできるユーザーに記載された条件のいずれかを満たすことも必要です。