假設今天我們要做一個網路連線的請求, 如果使用者按下 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.