2015-11-06 46 views
0

我一直在使用ConnectivityManager来检测是否有互联网连接或然而不是,它只是告诉你,不管是否有一个真正的互联网连接与否,我听说过这个可能通过发送ping到https://www.google.com/来检测。我也想表示敬酒。检测因特网连接的android

ConnectivityManager cmanager =  (ConnectivityManager)getSystemService(this.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cmanager.getActiveNetworkInfo(); 
    if(info!=null && info.isConnected()) { 
     if(info.getType() == ConnectivityManager.TYPE_WIFI) { 
      Toast.makeText(MainActivity.this, "Wifi", Toast.LENGTH_LONG).show(); 
     } else if(info.getType() == ConnectivityManager.TYPE_MOBILE) { 
      Toast.makeText(MainActivity.this, "mobile", Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     Toast.makeText(MainActivity.this, "Not connected", Toast.LENGTH_LONG).show(); 
    } 
} 


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
+1

您是否搜索?检查这里http://stackoverflow.com/questions/3905358/how-to-ping-external-ip-from-java-android –

+0

我做了男人,他们都没有似乎工作或显示烤面包 – MaggotSauceYumYum

+0

'他们都没有似乎...显示吐司“简单地向任何代码添加Toast(不仅仅是针对这个特定的情况),有什么问题? –

回答

0

我希望这会帮助你。

public static boolean thereIsConnection(Context context) { 

    if (SystemHelper.isEmulator(context)) { 
     return true; 
    } 

    ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo i = conMgr.getActiveNetworkInfo(); 
    if (i == null) { 
     return false; 
    } 
    if (!i.isConnected()) { 
     return false; 
    } 
    if (!i.isAvailable()) { 
     return false; 
    } 
    return true; 
} 
0

很简单是这样的:

private boolean haveInternet(){ 
NetworkInfo info = ((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 
if (info==null || !info.isConnected()) { 
return false; 
} 
if (info.isRoaming()) { 
// here is the roaming option you can change it if you want to disable internet while roaming, just return false 
return true; 
} 
return true; 
} 
0

根据您的问题试试这个:

public static boolean hasActiveInternetConnection(Context context) { 
     if (isNetworkAvailable(context)) { 
      try { 
       HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
       urlc.setRequestProperty("User-Agent", "Test"); 
       urlc.setRequestProperty("Connection", "close"); 
       urlc.setConnectTimeout(1500); 
       urlc.connect(); 
       return (urlc.getResponseCode() == 200); 
      } catch (IOException e) { 
       Log.e("Connection Status:", "Error checking internet connection", e); 
      } 
     } else { 
      Log.e("Connection Status:", "No network available!"); 
     } 
     return false; 
    } 

不要忘了提供所需的权限。

&不要在主线程上运行它(去像Asynctask这样的后台线程)。

+0

请在答案中加入敬酒。 – MaggotSauceYumYum

+0

好的,但请检查日志,如果你可以? – Androider

+0

你的答案充满了错误:(你可以编辑它,并给我完整的实施吗?我也想在此创建 – MaggotSauceYumYum

0

是的,你应该通过ping来完成。这是我的网络util工作正常:

public class NetworkUtil { 

     Context context; 

     public static boolean isConnected(Context context) { 
      return isNetworkAvailable(); 
     } 

     private static boolean isNetworkAvailable() {ConnectivityManager connectivityManager = (ConnectivityManager) 
       context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 

     if(info!=null && info.isConnected() && canAccessToInternet()) { 
      if(info.getType() == ConnectivityManager.TYPE_WIFI) { 
       Toast.makeText(MainActivity.this, "Wifi", Toast.LENGTH_LONG).show(); 
      } else if(info.getType() == ConnectivityManager.TYPE_MOBILE) { 
       Toast.makeText(MainActivity.this, "mobile", Toast.LENGTH_LONG).show(); 
      } 
      return true; 
     } else { 
      Toast.makeText(MainActivity.this, "Not connected", Toast.LENGTH_LONG).show(); 
      return false;  
     } 
    } 

    private static Boolean canAccessToInternet() { 
     Runtime runtime = Runtime.getRuntime(); 
     try { 
      Process ipProcess = runtime.exec("/system/bin/ping -c 1 google.com"); 
      int exitValue = ipProcess.waitFor(); 
      return exitValue == 0; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return false; 
    } 

} 
+0

请在你的答案中加入吐司。 – MaggotSauceYumYum

+0

完成!我刚刚编辑过 –