dhcp.ipAddress возвращает 0
При попытке получить IP-адрес маршрутизатора через WiFi-менеджер не может получить то же самое. Ниже приведен фрагмент кода.
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 ответа
Возвращает ноль, если происходит RemoteException. Может быть, вам не хватает интернет-разрешения в файле манифеста?
Вы должны проверить, если какая-либо сеть Wi-Fi доступна в первую очередь, если нет, 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());
}