#android
#Android
Вопрос:
У меня есть приложение. Это приложение прослушивает порт с сервера. сервер отправляет на мой ip данные. Мне нужно определить, когда изменился мой IP-адрес, например, нет подключения 3g, активируйте Wi-Fi. это генерирует новый IP, и мне нужно отправить этот IP на сервер, чтобы сервер отправил мне данные в этом новом ip. Вопрос в том, как я могу узнать, когда мой ip изменился???
Спасибо!!
Ответ №1:
Получите интерфейсы nw NetworkInterface.getNetworkInterfaces()
, а затем выполните getInetAddresses()
.
И что-то вроде этого, чтобы изменить широковещательные передачи:
private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)
// ...
Комментарии:
1. Мне не нужно отправлять свой новый IP, потому что сервер получит сообщение HTTP, и он может знать IP, мне просто нужно, чтобы клиент Android знал, когда изменился IP. этого достаточно с этим broadcastreceiver? спасибо!
2. С помощью BroadcastReceiver вы получаете возможность действовать, когда соединение меняет состояние. Именно тогда вы проверяете текущий IP-адрес любого интересующего вас интерфейса и сравниваете его с предыдущим IP-адресом, который вы проверили ранее.
3. Я его реализую. но как я могу запустить широковещательный приемник?
4. Это довольно приличный учебник, возможно, он может помочь? vogella.com/tutorials/AndroidBroadcastReceiver/article.html
Ответ №2:
вы можете получить его, зарегистрировав BroadcastReciever
для CONNECTIVITY_ACTION и сделать что-то вроде этого :
ConnectivityManager connMananger = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connMananger.getActiveNetworkInfo();