2016年2月1日 星期一

在 Android 中檢查網路連線是否暢通

在 Android 中檢查網路連線是否暢通

假設今天我們要做一個網路連線的請求, 如果使用者按下 button 你的 app 不管三七二十一就直接去做連線,這樣是很糟的~

運氣好一點你的 function return false 或者 catch exception,歹運的話就等等等等等等到 timeout,為了避免這種運氣差的狀況,你需要在開始連線前先檢查一下使用者的裝置到底有沒有連上網路。

我們可以使用 ConnectivityManager 取得 NetworkInfo 來查查目前裝置的網路狀態,包含目前是使用何種連線方式、網路是否連接、是否漫遊中……等等,應有盡有,簡單一點的話用 NetworkInfo.isConnectedOrConnecting() 就妥當了,以下是範例。

public boolean isOK() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    return ni != null && ni.isConnectedOrConnecting();
}

而要使用這個功能呢,需要在 manifest 加入以下 permisiion

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Reference:
How to check internet access on Android? InetAddress never timeouts…

Written with StackEdit.

13 則留言: