[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" />四、選擇/取消飛航模式系統將會作出不同反應。



留言
張貼留言