检查网络连接的问题

时间:2010-10-06 18:13:16

标签: android networking connectivity

我有一个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))。

我怎样才能在这里正确完成我想要的东西?

1 个答案:

答案 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;
}