2017-02-21 2 views
1

Когда Wi-Fi отключен, а мобильная сеть выключена, я могу ее обнаружить, но когда включено оба устройства, даже нет сети, моя проверка не работает. теперь мне нужно знать, как я могу проверить отсутствие INTERNET, когда мобильные данные и WIFI включены или выключены.Как проверить существование андроидной активности INTERNET

мой код:

NetworkInfo nf; 


ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    nf=cn.getActiveNetworkInfo(); 

      if(nf != null && nf.isConnected()==true) 
      { 

     // switch to new activity 
      } 
+0

Ну, я не знаю, является ли ваше приложение «подключением-проверкой-приложением» или что-то еще, но для обычного приложения я предлагаю не выполнять «работу» приложения, если он это интернет-соединение. Просто тайм-аут и обработайте этот случай соответственно, потому что вам все равно придется его обрабатывать. – JacksOnF1re

+0

@ JacksOnF1re, что будет отвечать за проверку существующего интернета – user3518835

ответ

0

Я использую это и она отлично работает до сих пор

public static boolean isOnline() { 
     InetAddress inetAddress = null; 
     try { 
      Future<InetAddress> future = Executors.newSingleThreadExecutor().submit(new Callable<InetAddress>() { 
       @Override 
       public InetAddress call() { 
        try { 
         return InetAddress.getByName("google.com"); 
        } catch (UnknownHostException e) { 
         return null; 
        } 
       } 
      }); 
      inetAddress = future.get(2000, TimeUnit.MILLISECONDS); 
      future.cancel(true); 
     } catch (InterruptedException | ExecutionException e) { 
      e.printStackTrace(); 
     } catch (TimeoutException e) { 
      e.printStackTrace(); 
     } 
     return inetAddress != null && !inetAddress.equals(""); 
    } 

Вы можете положить, что в NetworkUtil класс и использовать статический метод для проверки подключения.

+0

Это та же проблема, когда я выключаю мобильные данные или Wi-Fi, он работает нормально, но код не может обнаружить, если INTERNET отсутствует, даже если Wi-Fi или мобильные данные включены – user3518835

+0

@ user3518835 Как вы проверяете, нет ли здесь Интернета, кроме кода? –

+0

'if (isOnline) {// перейти к активности 2} else {// Toast ..« Требуется интернет »} public static boolean isOnline() {....}' Для wifi теперь супер, но я не знаю, t знать, почему для мобильной сети пытается переключиться на активность два, когда мобильные данные включены, даже если у меня нет Интернета. – user3518835