Android 11 での MAC アドレスの更新

Android 11 では、MAC アドレスに関連する以下の変更が導入されました。この変更は、Android 11 をターゲットとするアプリにのみ適用されます。

MAC のランダム化

Android 10(API レベル 29)以下をターゲットとするアプリでは、Passpoint が同じプロファイルの別の SSID に接続できるため、MAC のランダム化は SSID ごとに行われます。Android 11(API レベル 30)以上をターゲットとするアプリでは、Passpoint ネットワークの MAC ランダム化が完全修飾ドメイン名(FQDN)ごとに変更されます。

API レベル 30 以上をターゲットとするアプリでは、非特権アプリがデバイスの MAC アドレスにアクセスできなくなります。IP アドレスを持つネットワーク インターフェースしか確認できません。これにより、getifaddrs() メソッドと NetworkInterface.getHardwareAddress() メソッドのほか、RTM_GETLINK netlink メッセージの送信が影響を受けます。

この変更がアプリに与える影響は次のとおりです。

  • NetworkInterface.getHardwareAddress() はどのインターフェースにも null を返します。
  • アプリは NETLINK_ROUTE ソケット上で bind() 関数を使用できません。
  • ip コマンドはインターフェースに関する情報を返しません。

上記の変更は、MAC アドレスは使用しないで説明されるガイダンスを適用するものです。

デベロッパーは通常、下位レベルの NetworkInterface API や getifaddrs() API ではなく、ConnectivityManager の上位レベル API を使用してください。