2017-04-11 40 views

回答

3

因为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从未 ,则此方法返回空值。

+0

我可以在6棉花糖找到苹果,但不是7N。 –

+0

修改我的答案。现在应该解决了。使用DevicePolicyManager(是的,上面是带有W的DevicePolicyManagewr)。文档中存在拼写错误。 –

1

一小时后,我就解决了这个问题.....

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 for Work: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)

快乐编码....

+0

如果“isAdminActive”是错误的,这是什么意思? – GuybrushThreepwood

相关问题