[英]Android - How to check, device has Internet connection?
此代码有效:
public static boolean isConnected()
{
ConnectivityManager cm = (ConnectivityManager)App.getAppContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) {
if (ni.getType() == ConnectivityManager.TYPE_WIFI)
if (ni.isConnected())
return true;
if (ni.getType() == ConnectivityManager.TYPE_MOBILE)
if (ni.isConnected())
return true;
if (ni.getType() == ConnectivityManager.TYPE_ETHERNET)
if (ni.isConnected())
return true;
}
return false; //none of connections available
}
问题是:我们还需要检查TYPE_MOBILE_DUN
, TYPE_WIMAX
和TYPE_VPN
吗?
设备可以通过蓝牙连接到Internet吗?
只是一条评论。 想一想您需要什么,并记住连接到wifi路由器并不意味着您可以连接互联网,也可以像后端服务器那样到达任何兴趣点。 如果您的应用需要访问服务才能正常工作,那么最好的方法就是检查您是否可以通过异步调用尽早到达该服务,并且只有在您可以验证该连接的情况下才能继续操作。
尝试向http://www.google.com发出一个简单的GET请求。 如果您的响应代码为200或400,则说明存在互联网连接。
protected static boolean hasInternetAccess()
{
try
{
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("User-Agent", "Android Application:1");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000 * 30);
urlc.connect();
// http://www.w3.org/Protocols/HTTP/HTRESP.html
if (urlc.getResponseCode() == 200 || urlc.getResponseCode() > 400)
{
// Requested site is available
return true;
}
}
catch (Exception ex)
{
// Error while trying to connect
return false;
}
return false;
}
有关更多信息,请参阅: 完善的功能,可检查包括蓝牙声像在内的Android Internet连接
这就是我所使用的:
public static boolean isOffline() {
ConnectivityManager cm = (ConnectivityManager) BigOvenApplication.getInstance()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo == null || !netInfo.isConnected();
}
我认为您只需要这些。
只需调用方法isConnectedToNetwork来检查它是否具有连接。 在公共类文件中编写此方法。 因此,您可以在任何需要的地方使用简单的方法调用。
public static boolean isConnectedToNetwork(Context thisActivity) {
ConnectivityManager connMgr = (ConnectivityManager) thisActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
if (activeInfo != null && activeInfo.isConnected()) {
return true;
}
return false;
}
在开始操作之前进行检查。 // thisActivity表示片段的getActivity()
if (isConnectedToNetwork(thisActivity)) {
// your operation code follows
} else {
//show alert box that there is no internet connection
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.