動態註冊監聽網絡變化

package com.example.guangbo1;


import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.Toast;


public class MainActivity extends Activity {
private NetworkChangeReceiver networkChangeReceiver;   
private IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
networkChangeReceiver  =new  NetworkChangeReceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVTY_CHANGE");
registerReceiver(networkChangeReceiver, intentFilter);
ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// 獲取代表聯網狀態的NetWorkInfo對象
ConnectivityManager connectivityManager = null;
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
//獲取當前的網絡連接是否可用  
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
class NetworkChangeReceiver extends BroadcastReceiver{
public void onReceiver(Context context, Intent intent){
Toast.makeText(context, "network changes", Toast.LENGTH_SHORT);
}


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

}

}

動態註冊監聽網絡變化

思路:如何建立一個廣播接收器?

           首先在MainActivity中定義一個NetworkChangeReceiver內部類,讓這個類繼承BroadcastReceiver,並重寫父類onReceive(0方法,這樣當網絡發生變化時,onReceive的方法就會執行,這裏只是用Toast提示一下信息。

     然後在在OnCreate方法中創建一個IntentFilter的實例,並給它添加一個android.net.conn.CONNECTIVTY_CHANGE的action,(系統發出的廣播就是android.net.conn.CONNECTIVTY_CHANGE的廣播)接下來在建立一個NetworkChangeReceive的實例,然後調用registerReceive的方法來註冊,將NetworkChangeReceive的實例與IntentFilte的實例都傳進來,這樣NetworkChangeReceive就會收到值爲android.net.conn.CONNECTIVTY_CHANGE的廣播

最後需要將動態註冊廣播進行註銷,這裏用onDestroy()方法調用unregisterReceiver()方法來實現


發佈了39 篇原創文章 · 獲贊 28 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章