如何以编程方式在android中获取连接的wifi路由器的IP地址?
Posted
技术标签:
【中文标题】如何以编程方式在android中获取连接的wifi路由器的IP地址?【英文标题】:how to obtain the ip address of the connected wifi router in android programmatically? 【发布时间】:2012-08-13 15:29:58 【问题描述】:我想获取我的android手机所连接的wifi路由器的IP地址?我知道我们可以通过android APIS获取mac/BSSId和SSID,但是我找不到找到它的ip地址的方法?
我找到了获取手机ip地址的代码,拥有wifi路由器
WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
int ipAddress = myWifiInfo.getIpAddress();
System.out.println("WiFi address is " + android.text.format.Formatter.formatIpAddress(ipAddress))
但没能得到我想要的
【问题讨论】:
试试这个解决方案。 ***.com/a/6071963/735675 使用给定的代码你得到了什么?你想得到什么? 你添加权限了吗?我确定你的代码没有问题。 @paritybit 我想获取路由器的IP地址,这样我就可以连接到另一个连接到同一路由器的安卓手机 @Dya bro 这将给出android设备的IP地址..我想要它所连接的路由器的IP地址 【参考方案1】:你可能想要的是DhcpInfo
:
final WifiManager manager = (WifiManager) super.getSystemService(WIFI_SERVICE);
final DhcpInfo dhcp = manager.getDhcpInfo();
final String address = Formatter.formatIpAddress(dhcp.gateway);
这将生成(格式化的)网关 IP 地址,应该就是您要查找的地址。
【讨论】:
这是一个非常简单的解决方案,主要目标 - 它的工作原理。但很遗憾,它不支持 IPv6 它给了我本地 IP 地址【参考方案2】:由于 formatIpAddress 已被弃用,这里是替代方案:
public String getHotspotAdress()
final WifiManager manager = (WifiManager)super.getSystemService(WIFI_SERVICE);
final DhcpInfo dhcp = manager.getDhcpInfo();
int ipAddress = dhcp.gateway;
ipAddress = (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) ?
Integer.reverseBytes(ipAddress) : ipAddress;
byte[] ipAddressByte = BigInteger.valueOf(ipAddress).toByteArray();
try
InetAddress myAddr = InetAddress.getByAddress(ipAddressByte);
return myAddr.getHostAddress();
catch (UnknownHostException e)
// TODO Auto-generated catch block
Log.e("Wifi Class", "Error getting Hotspot IP address ", e);
return "null"
【讨论】:
以上是关于如何以编程方式在android中获取连接的wifi路由器的IP地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何在同一网络上以编程方式获取其他支持Wifi的设备的IP地址?
Android:如何以编程方式启用/禁用 Wifi 或 Internet 连接
Android:如何以编程方式启用/禁用 Wifi 或 Internet 连接