2014-10-21 4 views
-2

Я использую ConnectivityManager. я не знаю, что случилось с моим кодом, он всегда возвращает null, если подключен интернет. Мне помогите.Подключение к Интернету

public static boolean isOnline(Context ctx) { 
    // Toast.makeText(ctx,"get", Toast.LENGTH_LONG).show(); 
    ConnectivityManager mManager = (ConnectivityManager) ctx 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo mNetworkInfo = mManager.getActiveNetworkInfo(); 
    if ((mNetworkInfo != null) && (mNetworkInfo.isConnected())) { 
     return true; 
    } 
    return false; 
    } 


     if (NetworkConnection.isOnline(TIENews.this)) { 
      new GetNewsDetailAsyncTask(TIENews.this, url, newsListView) 
        .execute(); 
     } else { 
      Log.e("tag", "netIno return null"); 
      super.OpenWiFiDialog(getResources().getString(
        R.string.internet_error_msg)); 
     } 
    } 

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

+0

чек в манифесте Интернет permission.Also ваш план данных/Wi-Fi подключен или нет –

+0

Вы вспомнили [предоставить доступ to android.permission.ACCESS_NETWORK_STATE] (http://stackoverflow.com/a/6018405/1270789)? –

+0

Вы добавили разрешение '

ответ

0
public class ConnectionDetector { 

     private Context _context; 

     public ConnectionDetector(Context context) { 
      this._context = context; 
     } 

     public boolean isConnectingToInternet() { 
      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; 

Use this code. Its working 
1

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

+0

контекст не равен нулю – aditay

0

Это как проверить сеть, если она существует, или нет:

ConnectivityManager 

Метод 1

public boolean isConnected(){ 
    boolean result=false; 
    ConnectivityManager cm = (ConnectivityManager) getApplicationContext() 
    .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    if (null != activeNetwork) { 
      if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
      { 
       result=true; 
      msg="You are connected to a WiFi Network"; 
      } 
      if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
      { 
       result=true; 
       msg="You are connected to a Mobile Network"; 
       } 
      } 
    else{ 
    msg = "No internet Connectivity"; 
result=false; 
} 

    return result; 
} 

метод 2

public boolean isConnected() { 
    ConnectivityManager cm = (ConnectivityManager) getApplicationContext() 
    .getSystemService(Context.CONNECTIVITY_SERVICE); 
    // test 
    if (cm.getActiveNetworkInfo() != null 
    && cm.getActiveNetworkInfo().isAvailable() 
    && cm.getActiveNetworkInfo().isConnected()) { 

    msg="You are connected to a Network"; 

    return true; 
    } else { 

    msg = "No internet Connectivity"; 

    return false; 
    } 
    } 

Добавить эти строки в ваш манифест:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
0

В вашем коде не найдено ошибок. Может быть, контекст равен null.

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

// by default - its false 
    private boolean isInternetConnected = false; 

// Check the internet connectivity 

    isInternetConnected = Utilities.isInternetAvailable(MainActivity.this); 

if(isInternetConnected){ 
    // perform here 
} 

public static boolean isInternetAvailable(Context context) { 
     boolean haveConnectedWifi = false; 
     boolean haveConnectedMobile = false; 
     boolean connectionavailable = false; 
     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
     NetworkInfo informationabtnet = cm.getActiveNetworkInfo(); 
     for (NetworkInfo ni : netInfo) { 
      try { 
       if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
        if (ni.isConnected()) 
         haveConnectedWifi = true; 
       if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
        if (ni.isConnected()) 
         haveConnectedMobile = true; 
       if (informationabtnet.isAvailable() 
         && informationabtnet.isConnected()) 
        connectionavailable = true; 

      } catch (Exception e) { 

       System.out.println("Inside utils catch clause , exception is" 
         + e.toString()); 
       e.printStackTrace(); 
      } 
     } 
     return haveConnectedWifi || haveConnectedMobile; 
    } 

добавить также Интернет-разрешение в манифесте.

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
0

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

public boolean isNetwokReachable() { 
    ConnectivityManager connectivityManager = (ConnectivityManager) mSmartAndroidActivity.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo() .isConnected()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Добавить ниже требуемого разрешения в AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
Смежные вопросы