[Android]6.0 Marshmallow macアドレスが取得できない
既存アプリへの影響
私が所属している会社で販売しているAndroid端末向けの業務用パッケージソフトがあるのですが、Android 6 Marshmallow を搭載した端末で正常に動作しないと連絡を受けました。
明らかにおかしな動きをしている
なんだなんだ?
あれ、macアドレスがどの端末も同じ?
Macアドレスが取得できない
Android6.0(API level23)移行では、データ保護の観点からハードウェア識別子へのアクセスができなくなったとこと、、、
macアドレスを取得しようとしても必ず「02:00:00:00:00:00」が返ってくるようになっています。
以下、引用となりますが、、、
既存アプリに影響するAndroid 6.0での変更点
ユーザーのデーターを保護するために、このリリースではWi-FiとBluetoothAPI群を使うアプリにおいて、プログラムでデバイスのローカルハードウェア識別子へアクセスすることが出来なくなりました。
WifiInfo.getMacAddress()とBluetoothAdapter.getAddress()は常に02:00:00:00:00:00を返すようになります。BluetoothやWi-Fiスキャンによって近くのアクセス可能なハードウェア識別子へアクセスするにはACCESS_FINE_LOCATIONかACCESS_COARSE_LOCATIONpermissionが必要です。
・WifiManager.getScanResults()
・BluetoothDevice.ACTION_FOUND
・BluetoothLeScanner.startScan()
メモ:Android6.0(API level23)がWi-FiやBluetoothスキャンを始めた時、外部デバイスに対してはランダムなMACアドレスが使われます。
で、これまた回避策はない感じです
個体を識別する手段はこれからどうなるか
iOSでもUUIDやMacアドレスの取得を禁止するようになっており、Androidもこんな状態
今後はもう端末の個体を識別する手段というのは完全に駆逐されるように思います。
正直私はハードウェアメーカーのマーケティングとかではないので全く問題ないですが、、、
正直アプリ開発者としては、これといって問題はありません。
今回の問題も、ダミーのMacアドレスを割り振ることで対応できていますし、、、
なんにせよ、スマートフォンが復旧してきたこの時代
セキュリティ意識はもっと高くなってきそうですね