Android中的广播机制
16lz
2022-07-05
Android中之所以叫广播机制,其实就类似于我们平常现实生活中的广播,比如当android系统收到一个一条短信时,这时候就会向其他注册了广播并对此广播事件感兴趣的程序发出消息,当别的应用程序收到改广播时,就会对该事件进行一定的处理。
方法一,通过配置AndroidManifest.xml文件,新增
<receiver android:name="cn.edu.subclass.MyBroadCastReceiver"><intent-filter > <!--action中的标签代表感兴趣的广播,此时我们对接收短信感兴趣--><action android:name="android.provider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS" />//加上这一句权限
此时,如果系统收到短信,就会将广播信息传给该程序,该程序此时在那里处理这个广播呢,这时候我们就需要继承一个类,并重写其中的方法,如下
package cn.edu.subclass;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyBroadCastReceiver extends BroadcastReceiver{public MyBroadCastReceiver(){System.out.println("constructed!");}@Overridepublic void onReceive(Context arg0, Intent arg1) {// TODO Auto-generated method stubSystem.out.println("OK");}}
当系统收到短信信后就会输出OK,也就是执行上面的onReceive方法
方法二:通过代码注册广播
package cn.edu.design;import android.app.Activity;import android.content.IntentFilter;import android.os.Bundle;import cn.edu.subclass.MyBroadCastReceiver;public class AndroidBroadCastActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyBroadCastReceiver my=new MyBroadCastReceiver(); IntentFilter filter=new IntentFilter(); filter.addAction("android.provider.Telephony.SMS_RECEIVED"); this.registerReceiver(my, filter); }}
处理广播的代码:
package cn.edu.subclass;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyBroadCastReceiver extends BroadcastReceiver{public MyBroadCastReceiver(){System.out.println("constructed!");}@Overridepublic void onReceive(Context arg0, Intent arg1) {// TODO Auto-generated method stubSystem.out.println("OK");}}
方法一和方法二的区别是:方法一在程序关闭的时候,也会收到广播,执行其中的onReceive,方法二只会在程序开启的时候才会接收广播,执行onRecive方法,如果方法二种要移除该广播,可以调用unregisterReciver方法.
注意两种方法都要在AndroidManifest.xml中添加上如下配置信息:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android上一些方法的区别和用法的注意事项
- android实现字体闪烁动画的方法
- Android中dispatchDraw分析
- Android四大基本组件介绍与生命周期
- Android(安卓)MediaPlayer 常用方法介绍
- 在Fragment中设置控件点击方法,执行失败。