检测Android上的wifi IP地址?

Fra*_*osa 15 networking android wifi

我需要确定Android设备是否连接到Wifi,如果是,请获取其Wifi IP地址.

我知道如何使用ConnectivityManager来确定活动网络是否是Wifi网络,我知道如何使用java.net.NetworkInterface迭代可用的网络接口并获取其IP地址.

我不知道怎么做是确定哪个IP地址属于Wifi网络,如果找到多个地址.有什么建议?

谢谢.

Tan*_*dal 45

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;
}
Run Code Online (Sandbox Code Playgroud)

请注意:您需要添加android.permission.INTERNET,并 android.permission.ACCESS_WIFI_STATE在您AndroidManifest.xml<user-permission/>访问代码.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用Formatter.formatIpAddress而不是手动进行格式化. (3认同)