广播事件处理一.Broadcast Receiver比如打电话等等;广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别,而广播事件处理机制是系统级别。
二.使用Broadcast Receiver1.编写类继承BroadcaseReceiver,复写onReceiver()方法2.在AndroidManifest.xml文件中注册BroadcaseReceiver3.构建Intent对象4.调用sendBroadcase()方法发送广播三.BroadcaseReceiver生命周期BroadcastReceiver对象仅在调用onReceive()方法时有效,当该方法执行完毕后,系统认为销毁该对象。
四.标准广播Action五.注册Broadcast Receiver的方法1.在AndroidManifest.xml文件中进行注册//有缺陷,不会因为Activity被销毁而销毁,一般不用<receiver android:name="com.qmk.guangbo.Myguanbo"><intent-filter><action android:name="com.qmk.ACTION"/>//设置广播类型</intent-filter></receiver>这里可以设置action为短信什么的:(需要权限)//短信eceiver android:name="com.qmk.guangbo.Myguanbo"><intent-filter><actionandroid:name=""/></intent-filter></receiver>拍照2.在应用程序的代码中进行注册注册BroadcastReceiverregisterReceiver()取消注册BroadcastReceiverunregisterReceiver()实例1:MainActivity.javapackage com.example.guangbo;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button btn1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);btn1=(Button)findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();//广播也是Intent来传递的intent.setAction("android.provider.Telephony.SMS_RECEIVED");//设置action的值表示广播的类型,(name)sendBroadcast(intent);//把intent传递过来}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}Myguanbo.javapackage com.qmk.guangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Myguanbo extends BroadcastReceiver {//写一个类继承BroadcastReceiverprivate static final String TAG = "Myservice";public Secondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG, "2Receive");}@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG, "onReceive");}}实例2:MainActivity.javapackage com.example.guangbo;import com.qmk.guangbo.Secondrecvice;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.content.IntentFilter;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button btn1,btn2,btn3;private Secondrecvice rec;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);btn1=(Button)findViewById(R.id.btn1);btn2=(Button)findViewById(R.id.btn2);btn3=(Button)findViewById(R.id.btn3);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();//广播也是Intent来传递的intent.setAction("android.provider.Telephony.SMS_RECEIVED");//设置action的值表示广播的类型,(name)sendBroadcast(intent);//把intent传递过来}});btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {IntentFilter fitt=new IntentFilter();rec=new Secondrecvice();fitt.addAction("android.provider.Telephony.SMS_RECEIVED");//注册registerReceiver(rec, fitt);//参数1,用来处理广播的receiver;参数2:intentfilter对象}});btn3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {unregisterReceiver(rec);//注销}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}Myguanbo.javapackage com.qmk.guangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Myguanbo extends BroadcastReceiver {//写一个类继承BroadcastReceiverprivate static final String TAG = "Myservice";public Secondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG, "2Receive");}@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG, "onReceive");}}Secondrecvice.javapackage com.qmk.guangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Secondrecvice extends BroadcastReceiver {//写一个类继承BroadcastReceiverprivate static final String TAG = "Myservice";public Secondrecvice(){//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG, "2Receive");}@Overridepublic void onReceive(Context context, Intent intent) {//不能执行耗时的操作,它只存在1到2秒钟Log.i(TAG, "2onReceive");}}附录1:Android 广播事件 Intent Action 大全1.String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。