【问题标题】:Problem checking for network connectivity检查网络连接的问题
【发布时间】:2010-10-06 18:13:15
【问题描述】:

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

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

【问题讨论】:

    标签: android networking connectivity


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 是的,这行得通。我找到了这个,但还没有更新这个帖子。谢谢
    • 并且还添加 权限到 manifest
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多