2010-10-06 72 views
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

试试这个:

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

雅这会工作。我发现了这个,但还没有更新这篇文章。谢谢 – Andrew 2010-10-06 18:48:10

+0

并且还添加权限 – DuyguK 2013-02-09 15:45:45