2013-03-08 2 views
0

Итак, я нашел this answer здесь. Но я не могу заставить его работать, поскольку функция isNetworkAvailable не определяется при вызове с параметром типа контекста. Это код, который я использовал:Почему приложение не запускает этот код?

private boolean isNetworkAvailable(Context context) 
{ 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    if(ni!= null && ni.isConnected()) 
    { 
     return true; 
    } 
    return false; 
} 
public boolean dostupanInternet(Context context) 
{ 
    if(isNetworkAvailable(context)) 
    { 
     try 
     { 
      HttpURLConnection url = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
      url.setRequestProperty("User-Agent", "test"); 
      url.setRequestProperty("Connection", "close"); 
      url.setConnectTimeout(1000); 
      url.connect(); 
      return(url.getResponseCode() == 200); 
     } 
     catch(IOException e) 
     { 
      Log.e("LOG_TAG","Povezivanje sa internetom nije uspelo",e); 
     } 
    } 
    else 
     { 
      Log.d("LOG_TAG", "Povezivanje sa internetom nije uspelo"); 
     } 
    return false; 
} 

Но когда я запускаю это возвращает фатальную ошибку и заставляет приложение к выключению. Итак, мой вопрос: что вызывает фатальную ошибку (очевидно, необработанное исключение) и какой код заставит меня пройти проверку доступности Интернета?

+2

*, что вызывает фатальную ошибку (очевидно, необработанное исключение) * Стек трассировки покажет вам. Также убедитесь, что сетевые операции не выполняются в основном потоке (UI). –

+0

Также имейте в виду, что для вашего кода требуется разрешение 'ACCESS_NETWORK_STATE'. – CommonsWare

+0

Я добавил оба разрешения ACCESS_NETWORK_STATE и INTERNET. Спасибо за помощь вам обоим – NitroNbg

ответ

0

Попробуйте использовать этот метод

public boolean isConnectingToInternet(Context context){ 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 

     } 
     return false; 
} 
Смежные вопросы