我的應用執行一些背景數據收集,並添加對用戶網絡首選項的支持,例如執行後臺更新和數據漫遊。我有以下的檢查已經:如何尊重Android中的網絡使用設置
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
與清單所需的條目:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
這一切都似乎是工作的罰款,但我想知道如果我應該檢查什麼嗎?我很擔心檢查數據漫遊,但docs狀態networkInfo.isAvailable()
爲我檢查。那麼是否需要爲網絡設置實施其他檢查?我應該知道這方面的其他事情嗎?
好問題。網絡信息是否也沒有isRoaming方法。 (你是否只開發應用程序到北美地區,如果不是這可能是一個問題,因爲網絡協議可能會不同)。 – 2011-01-28 17:31:18
是的,有一個`isRoaming()`方法。至於networkInfo.isAvailable()`,如果網絡正在漫遊並且用戶已禁用數據漫遊,則似乎還沒有使用它。該應用程序將僅限於英國 - 我不**認爲**這對我迄今爲止的代碼有影響,但如果我要在答案中實現某些檢查,則必須檢查另一個NETWORK_TYPE 。 – 2011-01-28 18:02:18
我很好奇。我瀏覽了源代碼和文檔。 isNetworkAvilable是可靠的,因爲它檢查你是否在家庭網絡中。 (畢竟如果失敗了,你的應用程序不是唯一有問題的人)) – 2011-01-29 01:20:35