今日發現乙個問題,系統要求從裝置上獲取乙個唯一碼作為當前登入使用者的唯一標識;
之前嘗試過很多方法,最後決定採用mac位址。
官方獲取mac位址的方法是:
1
2
3
4
5
6
7
public
static
string getwifimac(context ctx)
但是最後發現,某些裝置上(比如樂視2手機,谷歌的nexus9 pad),用這種方式獲取的mac位址都是02:00:00:00:00:00 .
並不能起到唯一標識的作用。
後來發現,android的核心是linux,那麼應該可以通過shell命令的方式來獲取。
**如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 這是使用adb shell命令來獲取mac位址的方式
* @return
*/
public
static
string getmac()
}
}
catch
(ioexception ex)
return
macserial;
}
解決上述兩種裝置上mac位址獲取錯誤的問題。
可見,就算是谷歌官方給出的解決方案也未必可靠,要根據實際情況酌情考慮使用。
另外,嘗試了一下在4g網路下獲取mac位址,結果是null。說明 4g網路下不會有mac位址這一說,因為根本獲取不到。3g網也應該類似(沒做試驗)。
但是有些裝置,執行shell命令會報錯:許可權被拒絕。(nexus 9 pad親測,這個方法不靈);這就很尷尬了。。
關於獲取安卓手機MAC位址的問題
一.通過以下 獲取無線網絡卡mac位址publicstring getmacaddress 1.在 android 6.0以下是可以的,也就是說6.0以上不行2.如果將手機wifi開關關掉,然後關機,開機後不開啟wifi,是獲取不到mac位址的,開啟wifi後再獲取,是能得到的 在android 4...
獲取裝置mac位址
nsstring macaddress if sysctl mib,6,null,len,null,0 0 if buf malloc len null if sysctl mib,6,buf,len,null,0 0 ifm struct if msghdr buf sdl struct sock...
iOS獲取裝置資訊,MAC位址,IP位址,裝置名稱
import deviceinfoutil.h import globledata.h import sys utsname.h import import import import import include per msqr include include include define io...