獲取mac位址實際專案中測試了如下幾種方法:
(1)裝置開通wifi連線,獲取到網絡卡的mac位址(但是不開通wifi,這種方法獲取不到mac位址,這種方法也是網路上使用的最多的方法)
//(2)呼叫linux的busybox,通過linux命令來獲取根據wifi資訊獲取本地mac
public
static
string getlocalmacaddressfromwifiinfo(context context)
//(3)呼叫android 的api: networkinte***ce. gethardwareaddress ()根據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;
}
該api的level為9,只有android 2.3以上才有該介面
//其中getlocalipaddress是獲取本地ip位址根據ip獲取本地mac
public
static
string getlocalmacaddressfromip(context context)
catch
(exception e)
return
mac_s;
}public
static string byte2hex(byte
b) }
return
string.valueof(hs);
}
//獲取本地ip位址獲取本地ip
public
static
string getlocalipaddress()
} }
} catch
(socketexception ex)
return
null
; }
在網路上搜尋一下,一般就有如下的**:
//但是經過測試該方法在android2.3, 2.2...較老版本有效,但是在android較新版本(例如4.0等)獲取的資料不正確。獲取本地ip
public
static
string getlocalipaddress()
} }
} catch
(socketexception ex)
return
null
; }
獲取到了類似fe80::b607:f9ff:fee5:487e..這樣的ip位址。經過一番努力,終於找出原因。
上面的ip位址是ipv6的位址形式(大概這個意思,具體沒有太深入研究)。解決方法是,在上面**中的最內層的for迴圈的if語句中對inetaddress進行格式判斷,只有其是ipv4格式位址時,才返回值。修改後**如下:(下面的方法也是網路上的方法,沒有結果驗證)
public網路上還有一種方法來獲取本地ip位址(不過是在wifi狀態下)string getlocalipaddress()
} }
} catch
(socketexception ex)
return
null
; }
通過wifimanager, dhcpinfo獲取ip位址以及閘道器等資訊(在android4.0等版本也適用)
package加入permissioncom.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
}
不過我自己在做專案過程中,用另外一種方法也解決了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...