[Android] 偵測目前網路連線狀態

(Get the state of network connectivity)



某些情況下APP必須取得目前網路連線狀態,例如:執行需要從遠端進行下載的更新動作,上傳檔案…等等,只要取得目前連線狀態,就可以避免使用者在無網路狀態下去執行必然會產生例外的功能,系統也會讓人感覺比較友善。

ConnectivityManager是負責詢問目前網路連線狀態的類別,它可以透過getSystemService來取得其instance,以下將舉個簡單例子來說明如何取得網路狀態,並根據不同狀態產生相對應的動作。

程式碼說明

一、取得ConnectivityManager instance,透過getActiveNetworkInfo()取得網路連線狀態,以判斷目前網路連線與否。
private boolean isInternetConnected(){

//get ConnectivityManager instance
ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
//get network info
NetworkInfo netInfo = cm.getActiveNetworkInfo();
  
//check network is connecting
if(netInfo!=null&&netInfo.isConnected()){
 return true;
}else{
 return false;
}

}
二、在按鈕Click event listener加入偵測網路連線狀態之機制。
public void onRefresh(View v){

if(isInternetConnected()){
 Toast.makeText(this, "Do Reresh.", Toast.LENGTH_LONG).show();
}else{
 Toast.makeText(this, "Rereshing is not allowed.", Toast.LENGTH_LONG).show();
}

}
三、AndroidManifest.xml加入ACCESS_NETWORK_STATE這項Permission
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
四、選擇/取消飛航模式系統將會作出不同反應。




留言

這個網誌中的熱門文章

[Android] layout_weight的妙用-讓View的大小以百分比率顯示(proportionate size)

[Android] 內部儲存體(Internal Storage)的檔案系統讀寫(File I/O)

【海外婚紗】道具行李篇