1、Android的广播机制介绍


开发广播的接收器BroadcastReceiver,然后注册到Android的系统中;
当Android的系统产生事件后,通知注册的BroadcastReceiver;
BroadcastReceiver判断事件是否是自己需要的,再来做相应处理;


2、BroadcastReceiver的作用


3、BroadcastReceiver的编写方法


4、BroadcastReceiver的生命周期


实例:TestBC


public class TestReceiver extends BroadcastReceiver{
void onReceive(){...} // 消息发送后,TestReceiver对象的生命周期已经结束;再接受时,开始新的对象;
}


AndroidManifest.xml
<application>
<receiver android:name=".TestReceiver"> <!--注册BroadcastReceiver-->
<intent-filter>
<action android:name="android.intent.action.EDIT" /> <!--设置接收器的作用-->
<intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />


puclic class TestActivity extends Activity{
class BroadcastListener implements OnClickListener{
public void onClick(){
Intent intent = new Intent();
intent.setAction(Intent, ACTION_EDIT);
TestActivity.this.sendBroadcast(intent);
}
}

}

***************************************************
1、注册BroadcastReceiver的方法


BroadcastReceiver用于监听被广播的事件(Intent),为了达到这个目的,
BroadcastReceiver必须进行注册,注册的方法有以下两种:
1、在应用程序的代码当中进行注册
2、在AndroidManifest.xml当中进行注册
特点:即使应用程序被关闭了,BroadcastReceiver依然能接受到广播的事件;


在代码当中进行注册(可以随时关闭BroadcastReceiver接受广播):
注册BroadcastReceiver:
registerReceiver(receiver, filter);
取消注册BroadcastReceiver:
unregisterReceiver(receiver);
如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动的时候注册;
BroadcastReceiver,在Activity不可见以后取消注册;


2、Android内置的Broadcast Actions


在Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生的各种事件,
以下是比较常见的Action, 帮助文档的Intent类中可以查询到详细列表:
ACTION_CAMERA_BUTTON // Broadcast Action:The"Camera Button"was pressed.
ACTION_BATTERY_LOW // Broadcast Action:Indicates low battery condition on the device.
ACTION_DATE_CHANGED // Broadcast Action:The date has changed.
ACTION_POWER_CONNECTED // Broadcast Action:External power has been connected to the device.
ACTION_REBOOT // Broadcast Action:Have the device reboot.
ACTION_SCREEN_ON // Broadcast Action:Sent after the screen turns on.


实例:TestBC2


TestBC2Activity.java
SMSReceiver smsReceiver = null;
String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
RegisterReceiverListener{
smsReceiver = new SMSReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(SMS_ACTION);
}
UnRegisterReceiverListener{
TestBC2Activity.this.unregisterReceiver(smsReceiver);
}


SMSReceiver.java
onReceive(){
Bundle bundle = intent.getExtras();
Object[] myOBJpdus = (Object[]) bundle.get("pdus"); // pdus是bundle的一个属性
SmsMessage[] messages = new SmsMessage(myOBJpdus.length); // SmsMessage类型
for(int i=0; i<myOBJpdus.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]); // 将Bundle中的数据转换成SmsMessage类型的数据
messages[i].getDisplayMessageBody(); // 得到消息的内容
}
}


AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />

更多相关文章

  1. Android中Market的Loading效果实现方法
  2. android:TabHost使用方法
  3. Android内核开发:理解和掌握repo工具(含被墙后的下载方法)
  4. webapp打包为Android的apk包的一种方法

随机推荐

  1. Android中RelativeLayout各个属性的含义
  2. 在Android中查看和管理sqlite数据库
  3. 设置提示信息,输入值类型,输入框引入图片,设
  4. Android(安卓)屏幕适配
  5. android 布局中 layout_gravity、gravity
  6. Android应用开发从入门到实践
  7. Android屏幕解锁图案破解
  8. Android内存分析总结
  9. 【Android】Broadcast控制音乐暂停继续等
  10. Android(安卓)UI 用户界面开发基本概念概