要收到網絡連接和斷開連接通知,然後知道我的應用程序是否可以連接到互聯網,我註冊了一個ConnectionManager.CONNECTIVITY_ACTION
接收器。目前,我檢查,如果手機有以下這樣一個活動的網絡連接:理解問題CONNECTIVITY_ACTION extras
if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
// no connection!
} else {
NetworkInfo activeNetInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (activeNetInfo != null && activeNetInfo.isConnectedOrConnecting()) {
// active connection!
} else {
// no connection!
}
}
不過,我覺得我這樣做不對,因爲我的應用程序有時會誤報手機的連接狀態。閱讀EXTRA_NETWORK_INFO
的文檔,它似乎表明,如果爲這個額外返回的值爲null,則不存在連接:「...如果連接管理器嘗試連接(或已連接)到另一個網絡,則用於新網絡的NetworkInfo也作爲額外的「(http://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION)傳遞。
然而,當我的應用程序誤報連接,只是之前接收CONNECTIVITY_ACTION
廣播,getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo()
返回NetworkInfo
對象,其isConnectedOrConnecting()
檢查返回true。所以手機似乎已連接,但通過CONNECTIVITY_BROADCAST
返回的NetworkInfo
爲空。
我在做我的CONNECTIVITY_ACTION
接收器代碼錯了什麼?我不應該檢查EXTRA_NETWORK_INFO)
的值嗎?我可以簡單地依靠EXTRA_NO_CONNECTIVITY
嗎?
任何幫助表示讚賞!
不推薦使用'EXTRA_NETWORK_INFO'使用getActiveNetworkInfo()或getAllNetworkInfo()。 http://developer.android.com/reference/android/net/ConnectivityManager.html#EXTRA_NETWORK_INFO – 2014-11-25 07:41:30