2017-04-11 76 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

相關問題