我了解到自Android 6.0以来:
Android删除了对设备本地硬件的编程访问权限 使用Wi-Fi和蓝牙API的应用程序的标识符。该
WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()
方法现在返回一个常量值02:00:00:00:00:00。
但是,我感到困惑的是,当我的 targetSdkVersion 低于23时,它仍然会返回android 6.0设备中的常量。在我看来,我认为它应该返回一个唯一的硬件标识符,因为应用程序向前兼容性。 Whay没有系统启用任何兼容性行为? 这是我的uses-sdk:
android:minSdkVersion="8"
android:targetSdkVersion="22"
这是我的方法:
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String macAddress = wifiInfo.getMacAddress();
谢谢。原谅我的英语不好。
答案 0 :(得分:1)
为什么系统没有启用任何兼容性行为?
为了保护数据,我们无权享受此类向前兼容性。你的应用还在运行,对吧?所以它是向前兼容的。但即使它伤害了某人的合法目的,也必须解决安全漏洞。
发送一个常量值02:00:00:00:00:00
是一种兼容性行为,否则他们只会返回null
值