广播接收者

博客介绍了Android广播接收者的注册方式,包括静态注册和动态注册。静态注册需在清单文件中添加,同一APP和不同APP中的类都可获得值;动态注册无需在清单文件添加,可给指定对象发消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BroadCastReceiver是广播接收者 安卓四大组件之一
作用:用于传数据(同一个App多个组件中或者不同APP中)
用法:
 广播发送者 : 发送广播
广播接收者(调频): 用于接收广播
要处理的事情 :处理广播的相关信息, Intent有图对象
分类:
静态注册 动态注册

静态注册的广播接收者

在清单文件中添加(本APP中的类都可以获得值)

 <receiver android:name=".MyReceiver"  >
         <intent-filter>
                 <action android:name="com.wuyanzu"/>
         </intent-filter>
     </receiver>

.
同一APP



public class MainActivity extends AppCompatActivity {
  //这里的com.wuyanzu是清单文件里面定义的调频
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start();
    }

    public void start(){
    //这里的com.wuyanzu是清单文件里面定义的调频
        Intent intent=new Intent("com.wuyanzu");
        intent.putExtra("name","吴彦祖");
        //sendBroadcast是用来给广播接收者发数据的
        sendBroadcast(intent);
    }
}

//重写BroadcastReceiver 重写方法onReceive
public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("com.wuyanzu")){
            String name = intent.getStringExtra("name");
            Log.e("###", "onReceive: "+name);
        }
    }
}

不同APP

 public void normal_dialog() {
        //TODO 1:构建者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        //TODO 2:设置属性

        builder.setTitle("这是一个普通对话框");
        builder.setIcon(R.drawable.ic_launcher_background);
        builder.setMessage("我是普通对话框的普通语句");
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你点击了确认按钮", Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你点击了取消按钮", Toast.LENGTH_SHORT).show();
            }
        });
//主要是这句话!!!!!!!!!!!!!!!!!调用了这个方法就会把消息封装sendBroadcast发送给广播接收者 这是不同APP
        Intent intent =new Intent("com.wuyanzu");
        intent.putExtra("name","我点击了普通话给对话框");
        sendBroadcast(intent);
        //TODO 3:使用建造者创建对话框


     //   builder.setCancelable(false);
        AlertDialog alertDialog = builder.create();
        alertDialog.setCanceledOnTouchOutside(false);
        //TODO 4:显示
        alertDialog.show();
    }

动态注册

动态注册不用在清单文件中进行添加receiver用于给指定的发消息

public class MainActivity extends AppCompatActivity {
    MyReceiver myReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start();
    }
    //需要new 继承BroadcastReceiver类 用来注册广播
    public void start(){

        myReceiver = new MyReceiver();
        registerReceiver(myReceiver,new IntentFilter("com.wuyanzu"));


    }

//需要页面关闭的时候解除注册
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解除绑定
        unregisterReceiver(myReceiver);
    }
}

    public void dianji(View view) {
        Intent intent=new Intent();
        intent.setAction("com.wuyanzu");
        Bundle bundle=new Bundle();
        bundle.putString("msg","我是吴彦祖");
        intent.putExtras(bundle);
        sendBroadcast(intent);
    }

//继续输出接收的数据
public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("baiwei.wuyanzu")){
            String name = intent.getStringExtra("name");
            Log.e("###", "onReceive: "+name);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值