Как получить настоящий IP-адрес? Я использую код ниже, результат всегда будет 127.0.0.1
if (getIpType(context) == IP_TYPE_WIFI) {
WifiManager wifi_service = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcpInfo = wifi_service.getDhcpInfo();
WifiInfo wifiinfo = wifi_service.getConnectionInfo();
String ip = Formatter.formatIpAddress(dhcpInfo.ipAddress);
} else {
Runnable IpRunnable = new Runnable() {
@Override
public void run() {
InetAddress addr;
String localIp = null;
try {
addr = InetAddress.getLocalHost();
localIp = addr.getHostAddress();
} catch (UnknownHostException e) {
}
}
};
Thread payThread = new Thread(IpRunnable);
payThread.start();
}
3 ответа
Попробуй это
public String getLocalIpAddress(){
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (Exception ex) {
Log.e("IP Address", ex.toString());
}
return null;
}
Источник https://stackoverflow.com/a/11432695/5284441
Просто используйте Volley, чтобы получить IP-адрес этого сайта
RequestQueue queue = Volley.newRequestQueue(this);
String urlip = "http://checkip.amazonaws.com/";
StringRequest stringRequest = new StringRequest(Request.Method.GET, urlip, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
txtIP.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
txtIP.setText("didnt work");
}
});
queue.add(stringRequest);
Вы не можете получить общедоступный IP-адрес через примененный api android. метод - отправить запрос на какой-то веб-сайт, который ответит на информацию о вашем общедоступном IP-адресе, а затем проанализирует результат, чтобы получить общедоступный IP-адрес.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.