dhcp.ipAddress返回0

时间:2015-01-13 08:59:59

标签: android wifimanager

当试图通过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。 我哪里错了?还有什么需要做的吗?

我已经经历了许多相关的堆栈溢出问题,但没有人能够得到答案。 请仔细阅读问题,您的快速回复会有很大的帮助,如果您需要任何进一步的信息,请告诉我。

2 个答案:

答案 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());
}