Android中广播接收者BroadcastReceiver使用

BroadCastReceiver的使用分为两部分

1、接受系统发送的广播

新建一个类实现BroadCastReceiver ,并实现重写onReceive()方法

//检测系统的sd卡是否挂载
    public class SdCardBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if ("android.intent.action.MEDIA_MOUNTED".equals(action)) {
                System.out.println("sd卡已挂载");
            } else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
                System.out.println("sd卡已卸载");
            }
        }
    }

在清单文件中进行注册,并设置要接受的广播的意图

    <receiver android:name="com.example.sdbroadcast.SdCardBroadcastReceiver">
        <intent-filter>
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <data android:scheme="file" />
    </receiver>

2、发送和接受自己定义的广播

发送无序广播:

        Intent intent = new Intent();
        intent.setAction("com.example.test");
        intent.putExtra("key", "发送了自定的广播");
        sendBroadcast(intent);

发送有序广播

        Intent intent = new Intent();
        intent.setAction("com.example.test");
        intent.putExtra("key", "发送了自定的广播");
//        sendOrderedBroadcast(intent, null, new 
// FinalReceiver(), null, 0, "发了奖金100元", null);
sendOrderedBroadcast(intent,//意图动作,指定action动作
       null, //receiverPermission,接收这条广播具备什么权限
       new FinalReceiver(),//resultReceiver,最终的广播接受者,广播一定会传给他
       null, //scheduler,handler对象处理广播的分发
       0,//initialCode,初始代码
       "发了奖金100元", //initialData,初始数据
       null//initialExtras,额外的数据,如果觉得初始数据不够,可以通过bundle来指定其他数据
       );

接受广播都一样
(1) 新建一个类继承子BroadCastReceiver
(2) 在清单文件中进行注册
(3) 在清单文件中进行设置过滤条件,如果是有序广播我们还可以设置优先级属性 android:priority =”1000” 范围为-1000 ~ 1000,如果是有序广播的话,优先级越高,最先收到广播

常用API说明

getResultData(); 获取广播中携带的数据
setResultData(); 重新设置广播中最初始化的数据
abortBroadcast(); 终止广播的发送,如果比它自己优先级小的广播就接收不到了

有序广播和无序广播的区别

  • 无序广播

CCTV 广播电台 所有的人同时接收到消息,无法拦截.

  • 有序广播

发布一个文件–一级一级向下传达的–上一级就可以修改下一级的数据

高优先级的可以拦截广播,可以修改广播的数据.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值