首页 > 系统 > Android > 正文

Android 广播接收器

2019-11-06 09:36:50
字体:
来源:转载
供稿:网友

间接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);//注销接收器 }}

这里写图片描述

这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表