Android学习笔记——BroadcastReceiver

BroadcastReceiver的静态注册和动态注册


注册广播的方式

1.动态注册(在*.java代码中注册)
2.静态注册(在AndroidManifest.xml中注册receiver)

例:动态注册,监听网络变化

MainActivity.java
1. 声明两个数据成员

    private IntentFilter intentFilter;
    private NetworkChangeReceiver networkChangeReceiver;

2.在onCreate方法里注册广播

    intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); //要监听的广播(网络变化)
        networkChangeReceiver = new NetworkChangeReceiver();
        registerReceiver(networkChangeReceiver, intentFilter);          //注册

3.重写MainActivity的onDestory方法,取消注册

    @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(networkChangeReceiver);    //取消注册
    }

4.创建一个内部类NetworkChangeReceiver继承广播接收器BroadcastReceiver

class NetworkChangeReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
            if(networkInfo!=null && networkInfo.isAvailable()){
                Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
            }
        }
    }

5.在AndroidManifest.xml内加入查看系统网络状态的权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

6.运行程序,在打开或关闭网络时就会有相应提示,即使按下Home键,打开其他应用也能检测到网络状态变化并发送广播(但如果按返回键则不行,返回会自动调用onDestroy方法取消注册的广播。)

例:静态注册,实现开机启动

1.新建类继承BroadcastReceiver,重写onReceive方法

 public class BootCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_LONG).show);
    }

}         

2.在AndroidManifest中声明开机启动权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

3.在AndroidManifest中静态注册广播接收器

        <receiver android:name=".BootCompleteReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

4.把程序安装在手机上,重启手机后,就会看到发出的广播”Boot Complete”

发布了40 篇原创文章 · 获赞 41 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章