感謝該作者提供的方法。http://blog.csdn.net/langzi7758521/article/details/52575724
之前項目都是獲取imei碼,遇到的麻煩就是要權限或者某些機器,返回垃圾數據。。
現在,更換方案,使用MAC地址來作爲唯一的設備碼。
由於獲取mac碼需要設備開啓過WiFi,若從未開啓過,則返回空。
所以,思路就是。在獲取MAC地址之前先判斷當前WiFi狀態,若開啓了Wifi,則直接獲取MAC地址,若沒開啓Wifi,則用代碼開啓Wifi,然後馬上關閉,再獲取MAC地址。
目前此方法測試成功,無論在哪種狀態下都能正確取得設備的MAC地址(包括開機後未啓動過Wifi的狀態下),且在未開啓Wifi的狀態下,用代碼開啓Wifi並馬上關閉,過程極短,不會影響到用戶操作。
代碼如下:
public String getMacAddress() {
String macAddress =null;
WifiManager wifiManager =
(WifiManager)MyApplication.getContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = (null== wifiManager ?null: wifiManager.getConnectionInfo());
if(!wifiManager.isWifiEnabled())
{
//必須先打開,才能獲取到MAC地址
wifiManager.setWifiEnabled(true);
wifiManager.setWifiEnabled(false);
}
if(null!= info) {
macAddress = info.getMacAddress();
}
returnmacAddress;
}