2015-09-06 3 views
1

Это код, который я развертываю, чтобы проверить подключение к Интернету. Это отлично работает для каждой версии, кроме Lollipop. Я просто узнал из нескольких ссылок, что классы URL для версии lollipop отличаются от тех, которые мы использовали для более низких vsions. Может ли кто-нибудь помочь мне в этом вопросе предоставить код, который работает для всех версий телефона.как код для проверки подключения к Интернету для леденца?

код:

@Override 
    protected Boolean doInBackground(String... args){ 


    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnected()) { 
      try { 
       URL url = new URL("http://www.google.com"); 
       HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
       urlc.setConnectTimeout(4000); 
       urlc.connect(); 
       if (urlc.getResponseCode() == 200) { 
        return true; 
       } 
      } catch (MalformedURLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     return false; 

    } 
+0

Почему бы вам не попытаться достичь надежного сайта, такого как Google – Olu

ответ

0

Для проверки подключения к Интернету в каждой версии Android попробовать это:

1- Создайте класс с именем: ConnectionDetector и скопировать этот код

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 

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; 
} 
} 

2 - в вашей деятельности (выше onCreate method), что вы хотите проверить подключение к интернету, скопируйте этот код

Boolean _isInternetPresent = false; 
    ConnectionDetector _cd; 

и в методе OnCreate, где вы хотите, чтобы проверить, использовать интернет-подключение к этому условию:

 _cd = new ConnectionDetector(getApplicationContext()); 
    _isInternetPresent = _cd.isConnectingToInternet(); 

    if (_isInternetPresent) { 
     // your code that u want run if internet is connected 

    } else { 
     Toast.makeText(DisplayActivity.this, "Not communicate",Toast.LENGTH_SHORT).show(); 
      } 

Простой и полезный ...

0

я следовал этой ссылке http://www.androidhive.info/2012/07/android-detect-internet-connection-status/

общественного класса 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; 
} 

}

создать объект этого класса ConnectionDetector cd = new ConnectionDetector (контекст); boolean isInternetPresent = cd.isConnectingToInternet();

0

Для проверки подключения к Интернету.

public static void isNetworkAvailable(final Handler handler, final int timeout) { 
     // ask fo message '0' (not connected) or '1' (connected) on 'handler' 
     // the answer must be send before before within the 'timeout' (in milliseconds) 

     new Thread() { 
      private boolean responded = false; 
      @Override 
      public void run() { 
       // set 'responded' to TRUE if is able to connect with google mobile (responds fast) 
       new Thread() { 
        URL aURL; 
        String link = "some link"; 

        @Override 
        public void run() { 
         // HttpGet requestForTest = new HttpGet("https://lit-hamlet-6856.herokuapp.com/eventsList/TECHNICAL"); 
         HttpURLConnection connection; 
         try { 
          aURL = new URL(link); 

          connection = (HttpURLConnection) aURL.openConnection(); 
          connection.setRequestMethod("GET"); 
          connection.connect(); 

          // new DefaultHttpClient().execute(requestForTest); // can last... 

          if(connection.getResponseCode()==200) 
          responded = true; 
          Log.i(getClass().getName(),"RESULT"); 
         } 
         catch (Exception e) { 
         } 
        } 
       }.start(); 

       try { 
        int waited = 0; 
        while(!responded && (waited < timeout)) { 
         sleep(100); 
         if(!responded) { 
          waited += 100; 
         } 
        } 
       } 
       catch(InterruptedException e) {} // do nothing 
       finally { 
        if (!responded) { handler.sendEmptyMessage(0); } 
        else { handler.sendEmptyMessage(1); } 
       } 
      } 
     }.start(); 
    } 

Затем вызовите обработчик, чтобы сделать ваш, если интернет/не доступна работа

Handler h = new Handler(new Handler.Callback() { 
    @Override 
    public boolean handleMessage(Message msg) { 

     if (msg.what != 1) { // code if not connected 

      new NoInternetclass().execute(); 
     } else { // code if connected 
      new Internetclass().execute();//if net is present 

     } 
     return true; 

    } 
}); 

Затем вызовите isNetworkAvailable(h, 3000); из вашего OnCreate метод

Будьте уверены, этот класс работает как я использую этот код по моей связи 4 4,1,1

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