我有一个应用程序,它需要设备 MAC 地址。我很容易在棉花糖及以下获得mac地址,但android牛轧糖和O有问题。那么如何找到mac。
2 回答
自 6.0 及更高版本起更改:https ://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id
为了给用户提供更好的数据保护,从这个版本开始,Android 移除了对使用 Wi-Fi 和蓝牙 API 的应用程序的设备本地硬件标识符的编程访问。WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法现在返回 02:00:00:00:00:00 的常量值。
要通过蓝牙和 Wi-Fi 扫描访问附近外部设备的硬件标识符,您的应用现在必须具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。
7.0 中的行为变化:
设备所有者可以访问设备标识符。设备所有者可以使用 DevicePolicyManagewr.getWifiMacAddress() 访问设备的 Wi-Fi MAC 地址。如果设备上从未启用过 Wi-Fi,则此方法返回 null 值。
一小时后,我刚刚解决了问题......
DeviceAdminReceiver admin = new DeviceAdminReceiver();
DevicePolicyManager devicepolicymanager = admin.getManager(getApplicationContext());
ComponentName name1 = admin.getWho(getApplicationContext());
if (devicepolicymanager.isAdminActive(name1)){
String mac_address = devicepolicymanager.getWifiMacAddress(name1);
Log.e("macAddress",""+mac_address);
}
参考 :
1)Android 工作:https ://developer.android.com/about/versions/nougat/android-7.0-changes.html
2) DevicePolicyManger: https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getWifiMacAddress(android.content.ComponentName)
3)DeviceAdminReceiver: https://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html#getWho(android.content.Context)
快乐的编码......