我在我的应用程序中使用Volley进行网络浏览,除了一种状态,其中我的设备没有得到网络连接,但通过代码检查连接,使用下面的代码返回true,一切都工作得很顺利。
public static boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = SessionApplication.getConnectivityManager();
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
return true;
}
else
return false;
}
而不是使用上面的代码返回网络状态false我的排球网络调用返回我这个异常"处理com.android.volley.NoConnectionError:java.net.UnknownHostException"。
我通过在我的设备中打开浏览器检查了我的互联网连接,发现它也无法正常工作。所以我对应用程序行为没有问题,但我仍然需要处理这样的情况,因为这不是用户友好的用户应该被提示一个对话框"检查你的Internet连接!"。
这应该是Android中的常见问题可以帮助我给我最好的处理此类案例的方法。提前谢谢。
答案 0 :(得分:1)
尝试此方法可能有帮助
public boolean isConnectedToInternet(){
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null){
NetworkInfo[] info = connectivityManager.getAllNetworkInfo();
if (info != null){
for (int i = 0; i < info.length; i++){
if (info[i].getState() == NetworkInfo.State.CONNECTED){
return true;
}
}
}
}
return false;
}
答案 1 :(得分:1)
此异常表示连接问题。实际上,您可以显示一些有关连接的对话框。覆盖你可以这样做的if (!this.connManagerShared){
// ...some code
if (this.evictExpiredConnections || this.evictIdleConnections) {
final IdleConnectionEvictor connectionEvictor = new IdleConnectionEvictor((HttpClientConnectionManager) connManagerCopy,
this.maxIdleTime > 0L ? this.maxIdleTime : 10L, this.maxIdleTimeUnit != null ? this.maxIdleTimeUnit : TimeUnit.SECONDS);
closeablesCopy1.add(new Closeable()
{
public void close() throws IOException
{
connectionEvictor.shutdown();
}
});
connectionEvictor.start();
}
// ...some code
}
-
onErrorResponse(VolleyError error)