Broadcast

来源:互联网 发布:工业用电量数据 指标 编辑:程序博客网 时间:2024/04/29 17:25

转载自: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" />

原创粉丝点击