關於獲取安卓裝置的mac位址

2021-08-14 07:37:26 字數 1584 閱讀 1249

今日發現乙個問題,系統要求從裝置上獲取乙個唯一碼作為當前登入使用者的唯一標識;

之前嘗試過很多方法,最後決定採用mac位址。

官方獲取mac位址的方法是:

1

2

3

4

5

6

7

publicstaticstring 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

*/

publicstaticstring getmac()

}

}catch(ioexception ex)

returnmacserial;

}

解決上述兩種裝置上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...