下面是一段可以正常工作以检查网络是否连接的Android代码。Android:检查网络和真实的互联网连接
public static boolean isNetworkAvailable(Context context)
{
ConnectivityManager mConnectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
return (mConnectivityManager != null && mConnectivityManager.getActiveNetworkInfo().isConnectedOrConnecting()) ? true : false;
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
但是具有活动的网络接口并不能保证特定的网络服务可用。
很多时间发生,我们连接到网络,但仍无法访问常见的互联网网络服务,例如,谷歌
常见的场景:连接到Wi-Fi,这原来是一个私人 网络
- Android设备。所以isNetworkAvailable将返回该网络已连接,但可能 不能连接到任何其他服务
- 有时电话信号显示它连接到服务提供商的数据计划。所以网络连接是真实的,但仍然无法访问谷歌/雅虎。
一种方法是检查是否“isNetworkAvailable”函数返回TRUE,则下面的代码
HttpGet request = new HttpGet(url));
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 60000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 60000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
request.addHeader("Content-Type", "application/json");
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
result = EntityUtils.toString(entity);
}
}
catch (SocketException e)
{
return "Socket Exceptiopn:" + e.toString();
}
catch (Exception e)
{
return "General Execption:" + e.toString();
}
运行,但我想这是不是因为它可能会消耗大量的时间
一个好办法那么,有没有其他有效的方法(就时间和速度而言),确保我们连接到网络以及可以访问大多数常见的互联网服务?
这是一种检查的好方法,但是您可以针对您的问题以有组织的方式写出给定的答案。 –
我会建议你看看这个http://stackoverflow.com/questions/8919083/checking-host-reachability-availability-in-android – 2014-01-10 09:30:02