2013年8月6日

【Android】檢查網路連線狀態 Connectivity Network Active State

今天小黑人要與大家分享的內容是"網路連線狀態",因為如果在開發APP時需要接觸到網路連線的話,就必須先提前判斷手機是否已連線至網路,如果手機在未連線的狀態下處裡連線的事情,當然會有讀取不到資料開不起網頁甚至會發生讓程式錯誤關閉的現象產生,所以在進行網路溝通時前方加上一段檢查網路狀態的判斷式是最保險的,那要怎麼檢查網路連線的狀態呢?小黑人簡單歸類來告訴大家~

1.首先要在AndroidManifest.xml加入檢查網路狀態的權限 :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.接下來只要在程式端(.java)做判斷連線狀態就可以囉 :
ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();

//如果未連線的話,mNetworkInfo會等於null
if(mNetworkInfo != null)
{
    //網路是否已連線(true or false)
    mNetworkInfo.isConnected();

    //網路連線方式名稱(WIFI or mobile)
    mNetworkInfo.getTypeName();
    //網路連線狀態
    mNetworkInfo.getState();
    //網路是否可使用
    mNetworkInfo.isAvailable();
    //網路是否已連接or連線中
    mNetworkInfo.isConnectedOrConnecting();
    //網路是否故障有問題
    mNetworkInfo.isFailover();
    //網路是否在漫遊模式
    mNetworkInfo.isRoaming();
}
以上簡單的判斷就可以檢查網路目前的連線狀況囉,大家可以試試看唷 ^^
如有任何問題都可以和小黑人一起交流討論喔~謝謝大家~! XDD

10 則留言:

  1. 你好,小黑人大大的註解很清楚,可以學到很多東西
    不知道能不能寫篇android socket與pc java server資料傳輸的教學呢><

    回覆刪除
    回覆
    1. 您好,感謝您對小黑人的支持,
      您的建議文章小黑人會安排在日後的分享教學文章內,
      再請您多多推薦與交流。

      感謝您的發言!!! ^^

      刪除
    2. 請問一下
      這個可以改成先判斷連線狀態後顯示現在連線狀態嗎?

      刪除
    3. 您好,根據您的提問小黑人與您解釋,
      答案是可以的,mNetworkInfo.isConnected()這方法就是判斷連線狀態,
      只要加入到if進行判斷就可以得知目前網路狀態,
      作法如下:
      if(mNetworkInfo.isConnected())
      {
      //網路已連線
      }
      else
      {
      //網路尚未連線
      }

      感謝您的提問!

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 請問一下

    我如何判斷他是3g,4g還是wifi

    回覆刪除
    回覆
    1. 您好,根據您的提問小黑人與您解釋,
      此方法可以分辨出連線來源是"WIFI"or"行動數據"(3g 4g),
      藉由mNetworkInfo.getTypeName()可以判斷出這兩種,
      至於3G或4G皆是屬於行動數據類型,如果要再進一步分辨的話,
      可能需要再去讀取sim卡的電信資訊。

      感謝您的留言!

      刪除
  4. 你好,請問一下,
    若有的手機可在沒有連接到網路的狀況下 就會黑屏 或甚至閃退,
    可能是什麼原因呢?

    回覆刪除
  5. 黑人大,請問要怎麼一直去檢查有無網路連線
    該如何去尋找資料或是提供一點資訊
    謝謝您

    回覆刪除
  6. 手機型號被盜用還有Google被盜用了

    回覆刪除

謝謝大家支持,有任何問題都可以和小黑人一起討論!