Mars视频笔记——广播机制2

1 注册BroadcastReceiver的方法

BroadcastReceiver用于监听被广播的事件(Intent)

2种注册方法

(1)在应用程序代码中注册

注册BroadcastReciver:

registerReceiver(receiver,filter);

取消注册:

unregisterReceiver(receiver);

如果一个BroadcastReceiver用于更新UI,那么通常用代码方式

在Activity启动时注册BroadcastReceiver,在Activity不可见后取消注册

eg:

//生成一个BroadcastReceiver对象

smsReceiver = new SMSReceiver();//比如

//生成一个IntentFilter对象

IntentFilter filter = new IntentFilter();

//为filter添加一个Action

filter.addAction(android.provider.Telphony.SMS_RECEIVED);

//注册 (同理 解除绑定Activity.this.unregisterReceiver(smsReceiver);)

Activity.this.registerReceiver(smsReceiver,filter);

 

在Receiver类的onReceive方法中

通过Bundle bundle=intent.getExtras()得到intent中的数据

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

Bundle对象的一个属性pudus

SmsMessage[] message=new SmsMessage(myOBJpdus.length);

创建SmsMessage数组

通过for循环得到短消息内容

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

message[i]=SmsMessage.createFromPdu((byte[])myOBJpuds[i]);

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

调用SmsMessage的getDisplayMessageBody()方法得到最终内容

}

 

(2)在AndroidManifest.xml中注册

注意 该方法注册时 即使应用程序已经关闭 仍保持活动状态 继续监听广播

<receiver android:name="类">

<intent-filter>

<action ....../>

</intent-filter>

</receiver>

 

2 Android内置的BroadcastActions

ACTION_CAMERA_BUTTON

ACTION_BATTERY_LOW

ACTION_DATE_CHANGED

ACTION_POWER_CONNECTED

ACTION_REBOOT

ACTION_SCREEN_ON

SDK中的Intent部分中的BroadcastAction

 

******

在DDMS中的EmulatorControl中可以模拟发送短信等其他事项

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值