当试图通过WiFi管理器获取路由器IP地址时无法检索相同的内容。以下是代码段。
WifiManager wifiMgr = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = wifiMgr.getDhcpInfo();
System.out.println("ip add - " + dhcp.ipAddress + "gateway add -" + dhcp.gateway);
IP add和gateway add都会一直返回0。 我哪里错了?还有什么需要做的吗?
我已经经历了许多相关的堆栈溢出问题,但没有人能够得到答案。 请仔细阅读问题,您的快速回复会有很大的帮助,如果您需要任何进一步的信息,请告诉我。
答案 0 :(得分:0)
如果发生RemoteException,则返回null。也许您在清单文件中缺少Internet权限?
答案 1 :(得分:0)
您应首先检查是否有可用的无线网络,如果没有,DhcpInfo.ipAdress
将返回0.
如果要转换为点分格式,请尝试此操作(如果它是有效的IPv4地址):
try {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wm.getDhcpInfo().ipAddress;
byte[] ipAddressbyte = BigInteger.valueOf(ipAddress).toByteArray();
for (int i = 0; i < ipAddressbyte.length / 2; i++) {
int temp = ipAddressbyte[i];
ipAddressbyte[i] = ipAddressbyte[ipAddressbyte.length - i - 1];
ipAddressbyte[ipAddressbyte.length - i - 1] = (byte) temp;
}
InetAddress myaddr = InetAddress.getByAddress(ipAddressbyte);
String hostaddr = myaddr.getHostAddress(); // numeric representation (such as "127.0.0.1")
Log.d("INET",hostaddr);
}
catch (Exception exc) {
Log.d("Exception", exc.getMessage());
}