您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > android简单的广播事件处理
广播事件处理一.BroadcastReceiver比如打电话等等;广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别,而广播事件处理机制是系统级别。二.使用BroadcastReceiver1.编写类继承BroadcaseReceiver,复写onReceiver()方法2.在AndroidManifest.xml文件中注册BroadcaseReceiver3.构建Intent对象4.调用sendBroadcase()方法发送广播三.BroadcaseReceiver生命周期BroadcastReceiver对象仅在调用onReceive()方法时有效,当该方法执行完毕后,系统认为销毁该对象。四.标准广播Action五.注册BroadcastReceiver的方法1.在AndroidManifest.xml文件中进行注册//有缺陷,不会因为Activity被销毁而销毁,一般不用receiverandroid:name=com.qmk.guangbo.Myguanbointent-filteractionandroid:name=com.qmk.ACTION///设置广播类型/intent-filter/receiver这里可以设置action为短信什么的:(需要权限)//短信eceiverandroid:name=com.qmk.guangbo.Myguanbointent-filteractionandroid:name=//intent-filter/receiver拍照2.在应用程序的代码中进行注册注册BroadcastReceiverregisterReceiver()取消注册BroadcastReceiverunregisterReceiver()实例1:MainActivity.javapackagecom.example.guangbo;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassMainActivityextendsActivity{privateButtonbtn1;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1=(Button)findViewById(R.id.btn1);btn1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent();//广播也是Intent来传递的intent.setAction(android.provider.Telephony.SMS_RECEIVED);//设置action的值表示广播的类型,(name)sendBroadcast(intent);//把intent传递过来}});}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}Myguanbo.javapackagecom.qmk.guangbo;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.util.Log;publicclassMyguanboextendsBroadcastReceiver{//写一个类继承BroadcastReceiverprivatestaticfinalStringTAG=Myservice;publicSecondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG,2Receive);}@OverridepublicvoidonReceive(Contextcontext,Intentintent){Log.i(TAG,onReceive);}}实例2:MainActivity.javapackagecom.example.guangbo;importcom.qmk.guangbo.Secondrecvice;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassMainActivityextendsActivity{privateButtonbtn1,btn2,btn3;privateSecondrecvicerec;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1=(Button)findViewById(R.id.btn1);btn2=(Button)findViewById(R.id.btn2);btn3=(Button)findViewById(R.id.btn3);btn1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent();//广播也是Intent来传递的intent.setAction(android.provider.Telephony.SMS_RECEIVED);//设置action的值表示广播的类型,(name)sendBroadcast(intent);//把intent传递过来}});btn2.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){IntentFilterfitt=newIntentFilter();rec=newSecondrecvice();fitt.addAction(android.provider.Telephony.SMS_RECEIVED);//注册registerReceiver(rec,fitt);//参数1,用来处理广播的receiver;参数2:intentfilter对象}});btn3.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){unregisterReceiver(rec);//注销}});}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}Myguanbo.javapackagecom.qmk.guangbo;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.util.Log;publicclassMyguanboextendsBroadcastReceiver{//写一个类继承BroadcastReceiverprivatestaticfinalStringTAG=Myservice;publicSecondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG,2Receive);}@OverridepublicvoidonReceive(Contextcontext,Intentintent){Log.i(TAG,onReceive);}}Secondrecvice.javapackagecom.qmk.guangbo;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.util.Log;publicclassSecondrecviceextendsBroadcastReceiver{//写一个类继承BroadcastReceiverprivatestaticfinalStringTAG=Myservice;publicSecondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG,2Receive);}@OverridepublicvoidonReceive(Contextcontext,Intentintent){//不能执行耗时的操作,它只存在1到2秒钟Log.i(TAG,2onReceive);}}附录1:Android广播事件IntentAction大全1.StringADD_SHORTCUT_ACTION动作:在系统中添加一个快捷方式。.android.intent.action.ADD_SHORTCUT2.StringALL_APPS_ACTION动作:列举所有可用的应用。输入:无。android.intent.action.ALL_APPS3.StringALTERNATIVE_CATEGORY类别:说明activity是用户正在浏览的数据的一个可选操作。android.intent.category.ALTERNATIVE4.StringANSWER_ACTION动作:处理拨入的电话。android.intent.action.ANSWER5.StringBATTERY_CHANGED_ACTION广播:充电状态,或者电池的电量发生变化。android.intent.action.BATTERY_CHANGED6.StringBOOT_COMPLETED_ACTION广播:在系统启动后,这个动作被广播一次(只有一次)。android.intent.a
本文标题:android简单的广播事件处理
链接地址:https://www.777doc.com/doc-2897368 .html