2015-08-19 2 views
1

Помимо этого:Android: проверить доступ к интернету постоянно

InetAddress.getByName("www.xy.com").isReachable(timeout) 

или пинг к любому серверу

есть ли другой способ непрерывно проверки, если устройство имеет доступ в Интернете. И под этим я имею в виду не только подключенный к любой сети, но имеющий фактический доступ в Интернет.

Нечто похожее на то, что леденец делает, когда он подключен к некоторым WIFI сети, но сеть Wi-Fi не имеет доступа в Интернет и показывает восклицательный знак.

Примечание: Я уже знаю, ниже вещи и изменения соединения обнаруживается тонкая

<receiver android:name=".MyReceiver" > 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
    isConnected = true; 
    networkName = netInfo.getTypeName(); 
    networkType = netInfo.getType(); 
} 

ответ

0

Существует широковещательный знать состояние подключения. Вы можете получить более подробную информацию в этом question

0

Чтобы файл манифеста добавить эти:

<receiver android:name=".YOURRECEIVERNAME"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Затем создать класс Java, как показано ниже:

public class YOURRECEIVERNAME extends BroadcastReceiver { 
    private static final String TAG = "NetworkStateReceiver"; 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     Log.d(TAG, "Network connectivity change"); 

     if (intent.getExtras() != null) { 
      final ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      final NetworkInfo ni = connectivityManager.getActiveNetworkInfo(); 

      if (ni != null && ni.isConnectedOrConnecting()) { 
       Log.i(TAG, "Network " + ni.getTypeName() + " connected"); 
      } else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) { 
       Log.d(TAG, "There's no network connectivity"); 
      } 
     } 
    } 
} 

Теперь вручную включать и выключать сеть, чтобы увидеть эффект ,

 Смежные вопросы

  • Нет связанных вопросов^_^