Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android_ConnectivityManager連接管理

Android_ConnectivityManager連接管理

編輯:關於Android編程

ConnectivityManager

ConnectivityManager作為安卓網絡連接管理類,主要功能如下:
1. 通知應用網絡狀態的改變,發送廣播 ACTION:CONNECTIVITY_ACTION
2. WiFi,GPRS等網絡的連接管理(是否可用,連接狀態等)
3. 提供了一種api來讓應用去請求或是選擇網絡來進行數據的傳輸

需要的權限:

    

NetWorkActivity

public class NetWorkActivity extends ActionBarActivity {

    private final static String TAG = RAISE;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_net_work);
        check_network();

        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(NetworkReceiver, filter);
    }

    private void check_network() {
        //獲取網絡管理類
        ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        //得到當前可以使用的網絡
        NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
        //判斷當前網絡類型
        if (activeNetworkInfo != null) {
            if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                Log.d(TAG, 當前網絡: + activeNetworkInfo.getTypeName());
            } else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                Log.d(TAG, 當前網絡: + activeNetworkInfo.getTypeName());
            }
            NetworkInfo.State state = activeNetworkInfo.getState();
            if (state.ordinal() ==NetworkInfo.State.CONNECTED.ordinal()) {
                Log.d(TAG, activeNetworkInfo.getTypeName() + 網絡可用);
            }
        } else {
            Log.d(TAG, 無網絡可用);
        }
    }

    BroadcastReceiver NetworkReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                Log.d(TAG, 廣播接受);
                check_network();
            }
        }
    };

    @Override
    protected void onDestroy() {
        unregisterReceiver(NetworkReceiver);
        super.onDestroy();
    }
}

經測試發現,這個廣播會在注冊之後有一次調用
這個廣播只會在當前網絡切換為另一種網絡(必須可上網)或是無網絡時,才會調用
上圖:
這裡寫圖片描述
當然也可以分別獲得mobile和wifi的NetworkInfo來分別處理

        NetworkInfo mobile_networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifi_networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (mobile_networkInfo.isConnected()){
            //...
        }

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved