Альтернатива для Formatter.formatIpAddress(int);
Я использовал этот код в своем приложении, но предупреждение говорит:
"Формат методаIpAddress (int) из типа Formatter устарел"
android.text.format.Formatter.formatIpAddress(mWifiManager.getConnectionInfo().getIpAddress());
какое быстрое решение для этого?
Ответы
Ответ 1
В документации указано
Используйте getHostAddress(), который поддерживает как IPv4, так и IPv6-адреса. Этот метод не поддерживает адреса IPv6.
где getHostAddress()
относится к InetAddress.getHostAddress()
.
Однако WifiInfo
просто имеет адрес ipv4 как int
и AFAIK, там нет практического способа его преобразования в InetAddress
. Недостаток заключается в том, что функция не поддерживает ipv6, но не имеет значения WifiInfo
. Поэтому я бы сказал, просто используйте formatIpAddress()
, потому что он работает и добавляет @SuppressWarnings("deprecation")
, чтобы избавиться от предупреждения.
Ответ 2
WifiInfo wifiinfo = manager.getConnectionInfo();
byte[] myIPAddress = BigInteger.valueOf(wifiinfo.getIpAddress()).toByteArray();
// you must reverse the byte array before conversion. Use Apache commons library
ArrayUtils.reverse(myIPAddress);
InetAddress myInetIP = InetAddress.getByAddress(myIPAddress);
String myIP = myInetIP.getHostAddress();
Итак, myIP должен быть тем, что вы хотите.
Ответ 3
он был устарел с 12-го уровня api в пользу [getHostAdress();][1]
. Поэтому я предлагаю добавить аннотацию suppresswarning и сделать следующее:
String myIpString = null;
if (apilevel < 12) {
myIpString = formatIpAddress(...);
} else {
myIpString = getHostAdress();
}
вы можете получить уровень api устройства следующим образом:
int apiLevel = Integer.valueOf(android.os.Build.VERSION.SDK);
Ответ 4
Избавьтесь от предупреждения, добавив @SuppressWarnings ( "deprecation" )
@SuppressWarnings("deprecation")
public static String getLocalAddress()
{
String iIPv4 = "";
WifiManager wm = (WifiManager) theContext.getSystemService(Context.WIFI_SERVICE);
iIPv4 = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return iIPv4;
}