android獲取Mac位址和IP位址

2021-06-19 02:00:01 字數 3088 閱讀 8738

獲取mac位址實際專案中測試了如下幾種方法:

(1)裝置開通wifi連線,獲取到網絡卡的mac位址(但是不開通wifi,這種方法獲取不到mac位址,這種方法也是網路上使用的最多的方法)

//

根據wifi資訊獲取本地mac

public

static

string getlocalmacaddressfromwifiinfo(context context)

(2)呼叫linux的busybox,通過linux命令來獲取

//

根據busybox獲取本地mac

public

static

string getlocalmacaddressfrombusybox()

//對該行資料進行解析

//例如:eth0 link encap:ethernet hwaddr 00:16:e8:3e:df:67

if(result.length()>0 && result.contains("hwaddr")==true

)

return

result;

}

private

static

string callcmd(string cmd,string filter)

result =line;

log.i("test","result: "+result);

}

catch

(exception e)

return

result;

}

(3)呼叫android 的api: networkinte***ce. gethardwareaddress ()

該api的level為9,只有android 2.3以上才有該介面

//

根據ip獲取本地mac

public

static

string getlocalmacaddressfromip(context context)

catch

(exception e)

return

mac_s;

}public

static string byte2hex(byte

b) }

return

string.valueof(hs);

}

其中getlocalipaddress是獲取本地ip位址

//

獲取本地ip

public

static

string getlocalipaddress()

} }

} catch

(socketexception ex)

return

null

; }

獲取本地ip位址

在網路上搜尋一下,一般就有如下的**:

//

獲取本地ip

public

static

string getlocalipaddress()

} }

} catch

(socketexception ex)

return

null

; }

但是經過測試該方法在android2.3, 2.2...較老版本有效,但是在android較新版本(例如4.0等)獲取的資料不正確。

獲取到了類似fe80::b607:f9ff:fee5:487e..這樣的ip位址。經過一番努力,終於找出原因。

上面的ip位址是ipv6的位址形式(大概這個意思,具體沒有太深入研究)。解決方法是,在上面**中的最內層的for迴圈的if語句中對inetaddress進行格式判斷,只有其是ipv4格式位址時,才返回值。修改後**如下:(下面的方法也是網路上的方法,沒有結果驗證)

public

string getlocalipaddress()

} }

} catch

(socketexception ex)

return

null

; }

網路上還有一種方法來獲取本地ip位址(不過是在wifi狀態下)

通過wifimanager, dhcpinfo獲取ip位址以及閘道器等資訊(在android4.0等版本也適用)

package

com.jason.demo.androidip;

import

android.content.context;

import

android.net.dhcpinfo;

import

android.net.wifi.wifiinfo;

import

android.net.wifi.wifimanager;

import

android.text.format.formatter;

public

class

ipaddress

}

加入permission

不過我自己在做專案過程中,用另外一種方法也解決了android4.0獲取ip錯誤的問題:

//

獲取本地ip

public

static

string getlocalipaddress()

} }

} catch

(socketexception ex)

return

null

; }

參考博文:

android獲取mac位址

解決安卓4.0獲取本地ip位址問題。

通過wifimanager,dhcpinfo獲取android ip位址及閘道器等資訊(兩種方式)

利用inetaddress類確定特殊ip位址 (islinklocaladdress,isloopbackaddress等)

獲取Android的MAC位址

在android平台上,如果在開始啟動前去載入乙個測試程式,該測試程式的功能是去讀取wifi的mac位址,然後顯示出來,顯示的方式可以使用移植recovery源 的miniui。那麼讀wifi的mac位址無疑便是要初始化,裝載wifi驅動後,通過cat sys class net wlan0 add...

Android獲取Mac位址 適配所有版本

最近由於專案需要mac位址的記錄,搞了乙個通用的適配類,目前經過測試可以適配android所有版本,我測試過的裝置系統android 4 5 6 7 7 都可以獲取到,廢話不多說直接上 簡潔 該類分為三類 android6.0以下 6.0以上7.0以下 7.0以上 首先是獲取mac的整合方法 pub...

獲取MAC位址

簡單的辦法是在控制台輸入ping 目標ip,然後用 arp a 來檢視.或者下面的 記下來以備後用 private declare function inet addr function inet addr lib wsock32.dll byval s as string as int32 pri...