ANDROID как определить, что мой ip изменился??

#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();