我需要確定Android設備是否連接到Wifi,如果是,請獲取其Wifi IP地址。在Android上檢測wifi的IP地址?
我知道如何使用ConnectivityManager來確定活動網絡是否爲Wifi網絡,並且我知道如何使用java.net.NetworkInterface遍歷可用網絡接口並獲取其IP地址。
我不知道該怎麼做是確定哪個IP地址屬於Wifi網絡,如果有多個地址找到的話。有什麼建議?
謝謝。
我需要確定Android設備是否連接到Wifi,如果是,請獲取其Wifi IP地址。在Android上檢測wifi的IP地址?
我知道如何使用ConnectivityManager來確定活動網絡是否爲Wifi網絡,並且我知道如何使用java.net.NetworkInterface遍歷可用網絡接口並獲取其IP地址。
我不知道該怎麼做是確定哪個IP地址屬於Wifi網絡,如果有多個地址找到的話。有什麼建議?
謝謝。
public String getIpAddr() {
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipString = String.format(
"%d.%d.%d.%d",
(ip & 0xff),
(ip >> 8 & 0xff),
(ip >> 16 & 0xff),
(ip >> 24 & 0xff));
return ipString;
}
請注意:您需要在您的AndroidManifest.xml
添加android.permission.INTERNET
和android.permission.ACCESS_WIFI_STATE
爲<user-permission/>
訪問代碼。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
請嘗試此驗證碼。
ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//To fetch the state of the Wi-Fi network in the device
Boolean isWifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
WifiManager wifiMgr = (WifiManager) getBaseContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
//To fetch the name of the Wi-Fi network to which the device is connected
String wifiName = wifiInfo.getSSID();
這是因爲它給我的Wifi網絡的名稱是有用的,但是這不是真的是我一直在尋找。當我列舉網絡接口時,他們有諸如「tiwlan0」的名稱。我需要將該名稱與活動網絡相關聯。 –
static final int IP_ADDRESS_LENGTH = 32;
public static Integer getSystemWifiIpAddress(Context context)
{
WifiManager wManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = wManager.getConnectionInfo();
int ipAddress = wInfo.getIpAddress();
if (ipAddress == 0)
return null;
return ipAddress;
}
IP如何成爲int? –
這似乎工作,感謝信息。 –
很高興它工作! –
不需要INTERNET權限;只是ACCESS_WIFI_STATE(至少在4.1.1) –