0

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

我怎样才能正确地完成我想要的东西?

4

1 回答 1

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;
}
于 2010-10-06T18:44:39.670 回答