2015-10-23 2 views
0

Я использую BroadcastReceiver для обнаружения изменений в сети. Однако оператор my else выполняется дважды, когда нет подключения к Интернету. Каков лучший способ справиться с этим?Лучший способ проверить, нет ли подключения к Интернету?

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

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo(); 

    if (activeNetwork != null && (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI || activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)) { 
     Toast.makeText(context, "Connected", Toast.LENGTH_LONG).show(); 
    } else { 
     Intent i = new Intent(context, NetworkErrorActivity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 
+0

Прочитайте http://stackoverflow.com/a/4239019/719212 и http://stackoverflow.com/a/8548926/719212 – R4j

ответ

0

Я думаю, вы должны использовать этот метод activeNetworkInfo.isConnected(). Это возвращает логическое значение true при подключении.

+0

Да, я тоже это пробовал. Это дает мне те же результаты. – safaiyeh

+0

@safaiyeh тогда кажется, что как-то onReceive вызывается дважды –

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