android学习笔记之BroadcastReceiver

注册BroadcastReceiver的方法

 

BroadcastReceiver用于监听被广播的事件(Intent)为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法有两种:

1、  在应用程序的代码当中进行注册

注册BroadcastReceiver registerReceiver(receiver, filter);

取消注册BroadcastReceiver unregisterReceiver(receiver);

如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动时修注册BroadcastReceiver,在Activity不可见以后取消注册

 

例如:

 

Private static final String SMS_ACTION = “android.provider.Telephony.SMS_RECEIVED”;

//生成一个BroadcastReceiver对象

SMSReceiver smsReceiver = new SMSReceiver();

//生成一个IntentFilter对象

IntentFilter filter = new IntentFilter();

//IntentFilter添加一个Action

Filter.addAction(SMS_ACTION);  //收到短信时

//BroadcastReceiver对象注册到系统当中

TestActivity.this.registerReceiver(smsReceiver, filter);

 

//解除BroadcastReceiver对象的注册

TestActivity.this.unregisterReceiver(smsReceiver);

 

 

//接收Intent对象中的数据

Bundle bundle = intent.getExtras();

//Bundle对象当中有一个属性名为pdus,这个属性的值是一个Object数组

Object[] myOBJpdus = (Object[])bundle.get(“pdus”);

//创建一个SmsMessage类型的数组

SmsMessage[] messages = new SmsMessage[myOBJpdus.length];

for( int i = 0; i < myOBJpdus.length; i ++)

{

        //使用object数组当中的对象创建SmsMessage对象

        messages[i] = SmsMessage.createFromPdu((byte[])myOBJpdus[i]);

        //调用SmsMessage对象的getDisplayMessageBody()方法,可以得到消息的内容

        System.out.println(messages[i].getDisplayMessageBody());

}

 

2、在AndroidManifest.xml文件中进行注册(即使应用程序已经关闭,BroadcastReceiver依然会接收到广播)

 

 

内置的Broadcast Actions

Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生的各种事件,一下是一些比较常见的Action,完整的Action列表可以参考:

ACTION_CAMERA_BUTTON     camera Button was pressed

ACTION_BATTERY_LOW

ACTION_DATE_CHANGED

ACTION_POWER_CONNECTED

ACTION_REBOOT

ACTION_SCREEN_ON

 

 

发送广播的方法

1、调用activitysendBroadcast(intent)方法

2、使用PendingIntent.getBroadcast(Context, int, Intent, int)获得一个PendingIntent实例,该实例将实现广播的功能。

AlarmManager.set(int type, long triggerAtTime, PendingIntent operation)


發送廣播的三種方法:
Context.sendBroadcast 當多個廣播接收器的時候,接收廣播的順序沒有保證
Context.sendOrderedBroadcast 當多個廣播接收器的時候,接收廣播的順序按註冊時IntenFilter設置的優先級來執行。
Context.sendStickyBroadcast 當多個廣播接收器的時候,接收廣播的順序沒有保證;Intent在發送后會一直存在,以后註冊的廣播接收器也會收到。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值