Android基础BroadCastReceiver简介

1. 发送广播和接受广播

1.1 创建一个广播接受者,继承broadcastreceiver,重写onreceive方法

 class DianPuReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            int position = intent.getIntExtra("clickPostion", 0);
           
        }
    }

1.2 注册广播(代码注册和清单文件注册)

代码注册:

receiver = new DianPuReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.qiancheng.almirah2.guangdianpuitemchange");
        registerReceiver(receiver, filter);

清单文件注册:


注意:

(1)  java代码注册的广播接受者优先级要比清单文件的要高, 但是当前的广播接受者的生命周期的期限和activity是相关联的,activity销毁,广播接收者也就不再起作用

(2)  通过清单文件注册的广播接收者在系统中运行一次后就会被注册到系统中,以后无需运行此广播接受者,但是也可以接收到广播

(3)  接收广播时要注意在清单文件中添加对应的权限


2.系统常见的广播


2.1 拨打电话的广播

拦截的广播:

           android.intent.action.NEW_OUTGOING_CALL

需要的权限:

           android.permission.PROCESS_OUTGOING_CALLS


2.2 sd卡卸载的广播

拦截的广播:

           android.intent.action.MEDIA_UNMOUNTED

指定scheme:file

清单文件中注册:



2.3 系统开机的广播

拦截的广播:

android.intent.action.BOOT_COMPLETED

需要的权限:

android.permission.RECEIVE_BOOT_COMPLETED


注意:

3.0以上版本必须加权限,以下的版本可以不加,

3.0以上的版本如果用户没有启动过程序, 接收不到开启启动完成的广播


2.4 安装和卸载程序的广播

拦截的广播:

           android.intent.action.PACKAGE_ADDED

           android.intent.action.PACKAGE_REMOVED 

指定scheme: package


2.5 收到短信的广播

拦截的广播:

android.provider.Telephony.SMS_RECEIVED

需要的权限:

android.permission.RECEIVE_SMS

注意:优先级别需设置为最大, 在系统收到短信之前接收短信:priority="1000”

注意:android 4.2 后废除了此action


3.无序广播和有序广播

3.1无序广播

无序广播不可以被拦截,如果被拦截的话会报错

所有接收无序广播的广播接收者在此广播被发送时均能接收到此广播

无序广播使用sendBroadcast方法来发送

3.2有序广播

有序广播可以被拦截,且优先级高的接收者可以拦截优先级低的

广播接收者的优先级的取值范围是: 1000(最高) ~ -1000(最低)

相同优先级下,接收的顺序要看在清单文件中声明的顺序,先声明的接收者比后声明的要先收到广播

无序广播使用sendOrderedBroadcast方法来发送,使用abortBroadcast方法拦截

广播接收者的优先级在清单文件中声明接收者时,在<intent-filter>标签下通过设置”android:property”属性来设置



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值