WifiInfo.getMacAddressが常に02:00:00:00:00:00を返す件(Android 6.0)
Android6.0でBluetoothとWifiのMACアドレスの扱いが変更になりました。
Android 6.0 Changes のAccess to Hardware Identifierに記載があります。
少量なので簡単に翻訳してみました。
ユーザデータ保護のため今回のリリースからAndroidはアプリケーションがWi-FiおよびBluetoothのAPIを使用して端末固有識別子へのアクセスする機能を削除しました。
WifiInfo.getMacAddress()とBluetoothAdapter.getAddress()メソッドは02:00:00:00:00:00を返します。
近距離外部のデバイスのBluetoothやWifiのハードウェア識別子にアクセスするには、ACCESS_FINE_LOCATION や ACCESS_COARSE_LOCATIONの権限を持っている必要があります。
- WifiManager.getScanResults()
- BluetoothDevice.ACTION_FOUND
- BluetoothLeScanner.startScan()
NOTE:Android 6.0(API Level23)の端末がバックグラウンドでWi-FiもしくはBluetoothのスキャンを開始した場合、外部の端末にはその処理がランダムなMACアドレスから発信されたものとして認識されます。
簡単に纏めると
- BluetoothやWifiのMacアドレスを取得すると常に02:00:00:00:00:00を返す。
- スキャンする時はパミッションが必要になった。
- WiFiやBluetoothスキャン時にランダムのMACアドレスを使用するようになった。
となります。
iOSでは去年8月頃にWifiネットワークスキャン時にMACアドレスをランダムに生成するという変更が入りましたので、その追従という形なのでしょうか。。。。
参考