BroadCastReciver 广播接收器
需要创建一个接收器自定义一个类来继承BroadCastReciver 重写OnRecive方法在方法里判断获取到的action是不是你注册的动作
如果是执行你想要让其进行的操作
如果是自己发送的广播就需要在清单文件中或者是activity中注册 一定要在Ondestroy中解除注册
如果是系统广播也有上述两种注册方式不过都不用手动来发送也不用再ondestroy方法中来解除注册
在activity中注册
/**发送自己的广播先注册**/
receiver=new recever();
IntentFilter filter=new IntentFilter("XXX");//创建意图过滤器
registerReceiver(receiver, filter);//注册
Intent intent=new Intent();
intent.setAction("XXX");
intent.putExtra("XK", "whta's happen?");
sendBroadcast(intent);//发送广播
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(receiver);//解除注册
}
在清单文件中注册于activity同级
<receiver android:name="com.example.reverss.MyResiver">
<intent-filter >
<action android:name="android.intent.action.AIRPLANE_MODE"/>
</intent-filter>
</receiver>
简单的实例
发送端
package com.example.resiver;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
recever receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setContentView(R.layout.activity_main);
/**发送自己的广播先注册**/
receiver=new recever();
IntentFilter filter=new IntentFilter("XXX");//创建意图过滤器
registerReceiver(receiver, filter);//注册
Intent intent=new Intent();
intent.setAction("XXX");
intent.putExtra("XK", "whta's happen?");//intent传值
sendBroadcast(intent);
// /**接受系统广播**/
// receiver=new recever();
// //创建一个意图过滤器筛选这个动作
// IntentFilter filter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
// registerReceiver(receiver, filter);//注册
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(receiver);//解除注册
}
}
接收器
package com.example.resiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class recever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// String action=intent.getAction();//当获取的到动作是电池改变的时候
// if(action.equals(Intent.ACTION_BATTERY_CHANGED)){
// System.out.println("我监听到了电池改变");
// }
String action=intent.getAction();
if(action.equals("XXX")){
String msg=intent.getStringExtra("XK");//获取传递过来的值
System.out.println("msg:"+msg);
}
}
}