2010-10-06 139 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