我有一个IntentService来进行一些Web服务调用。在进行这些呼叫之前,我会检查以确保设备具有网络连接。我是这样做的:
private boolean isOnline() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(getApplicationContext().CONNECTIVITY_SERVICE);
return connec.getNetworkInfo(0).isConnectedOrConnecting();
}
不幸的是,当我在我的Android设备上进行调试时,当我同时拥有网络和无线连接时,这将返回false。
关于connec.getNetworkInfo(0)的一些有趣的花絮:
mIsAvailable = true
mNetworkType = 0
mTypeName = "mobile"
mState.name = "DISCONNECTED"
显然,这段代码是不够的(如果我通过网络发送一些信息并开启无线电,它可能只会返回true)。此外,由于我不熟悉ConnectivityManager,我假设我应该扫描所有网络(即:getNetworkInfo(0到N))。
我怎样才能在这里正确完成我想要的东西?
答案 0 :(得分:4)
试试这个:
public static boolean isNetworkConnected(Context context){
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo network = cm.getActiveNetworkInfo();
if(network != null){
return network.isAvailable();
}
return false;
}