间接Intent是指没有一个指定具体目标的Intent,本身被创建时添加了一些描述信息。
发送广播
Intent intent1=new Intent("Action1");
intent1.putExtra("data", "I am action_1");
sendBroadcast(intent1);
接收广播
使用BroadcastReceiver有4个步骤:
1. 新建一个Intent过滤器。new IntentFilter();
2. 新建一个BroadcastReceiver。new BroadcastReceiver()并重写onReceive()。
3. 注册广播接收器。registerReceiver(receiver, intentFilter);
4. 注销广播接收器 unregisterReceiver(receiver);
public class MainActivity extends Activity {
TextView tv;
BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.show);
initView();
IntentFilter intentFilter=new IntentFilter("Action1");//新建过滤器,接收“Action1”的Intent
intentFilter.addAction("Action2");//添加接收的Action
receiver=new BroadcastReceiver() {//新建广播接收器
@Override
public void onReceive(Context context, Intent intent) {
// TODO 自动生成的方法存根
String action=intent.getAction();
String data=intent.getExtras().getString("data");
if(action.equals("Action1")){
tv.setText("from Action1:\n"+data);
}
else if(action.equals("Action2")){
tv.setText("from Action2:\n"+data);
}
}
};
registerReceiver(receiver, intentFilter);//注册接收器
}
public void initView(){
Button btn1=(Button)findViewById(R.id.send1);
Button btn2=(Button)findViewById(R.id.send2);
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
int id=v.getId();
switch(id){
case R.id.send1:
Intent intent1=new Intent("Action1");
intent1.putExtra("data", "I am action_1");
sendBroadcast(intent1);
break;
case R.id.send2:
Intent intent2=new Intent("Action2");
intent2.putExtra("data", "I am action_2");
sendBroadcast(intent2);
}
}
};
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
}
public void onStop(){
super.onStop();
unregisterReceiver(receiver);//注销接收器
}
}