1

У меня есть функция для успешного обнаружения подключения к Интернету в приложениях с Android 4.1 до 6.0, отправив пинг. (Потому что помните, что подключение к Wi-Fi или мобильной сети само по себе не гарантирует, что у этого устройства есть реальный доступ к Интернету.) Моя проблема в том, что я обнаружил, что по какой-то причине мой код не работает в Android 4,3. Вы знаете, как это исправить? или, может быть, знаете ли вы лучший метод обнаружения интернет-подключения на всех устройствах в версиях Android 4.1 - 6.0?Проверка подключения к интернету с помощью ping только в Android 4.3 Jellybean

//this function works perfectly!! except in Android 4.3 Jellybean 
    public boolean isOnline() { 
      Runtime runtime = Runtime.getRuntime(); 
      try { 
       Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8"); 
       int  exitValue = ipProcess.waitFor(); 
       if(exitValue==0) 
        app.logy("PING @K - ONLINE!!"); 
       return (exitValue == 0); 
      } catch (IOException e){ 
       e.printStackTrace(); 
       app.logy("PING ERROR - OFFLINE"); 
       return false; 
       } 
      catch (InterruptedException e){ 
       e.printStackTrace(); 
       app.logy("PING ERROR - OFFLINE"); 
       return false; 
      } 
     } 

ответ

0

http://clients3.google.com/generate_204 используется для проверки соединения, пинги работает по-разному в Diferent устройств.

Why does ping works on some devices and not others?

private int inter = 0; 





      class checkconne extends AsyncTask<String, String, String> { 

         @Override 
         protected void onPreExecute() { 
          super.onPreExecute(); 



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

          int kk=0; 
          try { 
           HttpURLConnection urlc = (HttpURLConnection) 
             (new URL("http://clients3.google.com/generate_204") 
               .openConnection()); 
           urlc.setRequestProperty("User-Agent", "Android"); 
           urlc.setRequestProperty("Connection", "close"); 
           urlc.setConnectTimeout(1500); 
           urlc.connect(); 
           kk= urlc.getResponseCode(); 
          } catch (IOException e) { 
           Log.e("qweqwe", "Error checking internet connection", e); 
          } 

          inter=kk; 



          return null; 
         } 
         @Override 
         protected void onPostExecute(String file_url) { 


          if (inter == 204){  
      Toast.makeText(MainActivity3.this, "is connected", Toast.LENGTH_LONG).show();    

          }else{  


           Toast.makeText(MainActivity3.this, "No connection", Toast.LENGTH_LONG).show(); 

          } 


         } 
        }