[英]Mac address for android 6.0 and above shows null
我正在使用此代碼獲取 MAC 地址並將其顯示在我的應用程序中。 該代碼適用於除最新設備和 ANDROID BOX 之外的所有設備。
對於 ANDROID BOX 和其他最新設備,它顯示為 null。
這是代碼:
public static String getWifiMacAddress() {
try {
String interfaceName = "wlan0";
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
if (!intf.getName().equalsIgnoreCase(interfaceName)){
continue;
}
byte[] mac = intf.getHardwareAddress();
if (mac==null){
return "";
}
StringBuilder buf = new StringBuilder();
for (byte aMac : mac) {
buf.append(String.format("%02X:", aMac));
}
if (buf.length()>0) {
buf.deleteCharAt(buf.length() - 1);
}
return buf.toString();
}
} catch (Exception ex) { } // for now eat exceptions
return "";
}
我已經在清單文件中寫入了這些權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
首先你會檢查許可是否被授予?
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = wifiManager.getConnectionInfo();
String macAddress = wInfo.getMacAddress();
另外,在清單文件中添加以下權限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
首先,您需要在 AndroidManifest.xml 中添加 Internet 用戶權限。
<uses-permission android:name="android.permission.INTERNET" />
然后參考這個獲取mac地址: http : //robinhenniges.com/en/android6-get-mac-address-programmatically
如果它不起作用,請參考此Android 6.0 更改,我得出的結論是,
為了向用戶提供更好的數據保護,從本版本開始,Android 刪除了使用 Wi-Fi 和藍牙 API 的應用程序對設備本地硬件標識符的編程訪問。 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法現在返回一個常量值 02:00:00:00:00:00。
要通過藍牙和 Wi-Fi 掃描訪問附近外部設備的硬件標識符,您的應用現在必須具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 權限。 需要注意的是:你不能讓自己的MAC甚至有這些權限。 仔細閱讀,據說您可以獲得具有這些權限的其他設備MAC,但不是您自己的。
在 6.0 及更高版本中,僅在 Manifest 中添加權限是行不通的。 您應該擁有運行時權限,如果未授予,則授予它。
檢查此鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.