Android手機AP模式下本機IP
阿新 • • 發佈:2019-01-27
至今為止Android沒有官方IP獲取AP模式下的IP的介面,而且由於Android的開放性,各個廠商都發揮自己的想象力修改framework。所以預設的IP並不一定就是AP模式下的IP,要獲取真實的IP就要另外想辦法了。
先檢查Wifi是否處於AP模式,然後執行下述程式碼:
private String getIP() {
// default IP for most device's softAp
String hotspotIp = "192.168.43.1";
try {
Enumeration<NetworkInterface> faces = NetworkInterface.getNetworkInterfaces();
while (faces.hasMoreElements()) {
NetworkInterface iface = faces.nextElement();
if (iface.isUp() && !iface.isLoopback() && !iface.isPointToPoint()) {
List<InterfaceAddress> listAddress = iface.getInterfaceAddresses();
for (InterfaceAddress address: listAddress) {
String ip = address.getAddress().toString();
Log.d("Stone", iface.getName() + " ip : " + ip);
if (ip.startsWith("/192.168")) {
hotspotIp = ip;
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return hotspotIp.replace("/", "");
}
檢視Android framework的程式碼可發現,192.168.43.1是AP模式下的預設IP,但是也不有部分不合流的廠商會修改它。沒問題,當AP模式開啟之後我們列舉所有IP,並且匹配192.168開頭的IP作為結果。如果有廠商喪心病狂到將IP改為非192.168段的,還有一個方法是讀取系統property wifi.interface的值,假如是wlan0,那麼wlan0的IP就是結果。