转载自:http://blog.csdn.net/angelacsdn/article/details/6907079

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.
更多Action参见与:android文档Intent中Action介绍

实例: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 添加button事件后 提示 view cannot be resolved to a t
  2. Android(安卓)开机自启动应用
  3. 关于android 的触摸事件
  4. 重点核心☆☆☆☆☆按钮点击事件的四种类型
  5. android 4中新增的日历处理相关API
  6. Android(安卓)adb 模拟滑动 按键 点击事件
  7. Android(安卓)Camera 五 Camera HAL v1
  8. Android(安卓)EventBus的使用
  9. Android(安卓)主动获取电量的方法

随机推荐

  1. 利用Handler来更新android的UI
  2. Android通过ContentProvider传输文件
  3. Android(安卓)Spinner与setDropDownViewR
  4. 解决Android编辑框在全屏模式下无法检测
  5. 解决Android模拟器打不开的问题!...
  6. 【Android(安卓)应用开发】Android(安卓)
  7. Windows环境下Android(安卓)源码模块下载
  8. Android(安卓)Toolbar
  9. Android(安卓)AppWidget系统框架
  10. Android中ListView中Item的设置