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