TShopping

 找回密碼
 註冊
搜索
查看: 1834|回復: 0
打印 上一主題 下一主題

[教學] 判斷手機是否連上網路 (ConnectivityManager)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-10-16 23:01:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
通常手機在開發網路的應用程式時, 常會定時的去取資料回來
但…倘若目前手機無法對外連線, 則這段動作就會造成手機效能無謂的耗損、與電力的浪費
所以在開發網路型的應用程式時, 首先要做的第一個功課, 便是 “判斷手機目前是否已連線"

而 Android 系統的手機, 目前是否連上網路? 以什麼方式連上網路? (WIFI / 3G…)?
目前網路是否故障中(Failover)? 目前手機是否在漫遊中(Roaming)?
這些相關的資訊, 都存在於 ConnectivityManager 這個類別當中
而使用的方式只需要去向系統取回這個服務即可


  1. ConnectivityManager CM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  2. NetworkInfo info = CM.getActiveNetworkInfo();
複製代碼

而當中要注意到的地方, 是在 NetworkInfo 這段,
倘若你的手機目前不在網路的服務範圍, 也就是說沒有任何方式可以連出去網路
則 CM.getActiveNetworkInfo() 取回的 Reference 會是 Null,
忘了做此判斷的話, 手機則會立刻罷工給你看 (NullPointerException)
而比較常見需要取得的資料如下:


  1. info.getTypeName();     // 目前以何種方式連線 [WIFI]
  2. info.getState();        // 目前連線狀態 [CONNECTED]
  3. info.isAvailable();     // 目前網路是否可使用 [true]
  4. info.isConnected();     // 網路是否已連接 [true]
  5. info.isConnectedOrConnecting(); // 網路是否已連接 或 連線中 [true]
  6. info.isFailover();      // 網路目前是否有問題 [false]
  7. info.isRoaming();       // 網路目前是否在漫遊中 [false]
複製代碼

除此之外, 也必需替應用程式設定權限, 不然手機一樣會罷工給你看 (SecurityException)
設定權限的方式則是在 AndroidManifest.xml 裡頭新增底下的權限


  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
複製代碼


轉帖 https://jacobtsai.wordpress.com/ ... onnectivitymanager/

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-23 19:05 , Processed in 0.055342 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表