动态注册发送广播

动态注册发送广播


1.新建一个类继承BroadcastReceiver重写onReceive方法

public class Receiver3 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("myBroadCast")) {
            //接收到广播,取出里面携带的数据
            String str = intent.getStringExtra("data");
            Toast.makeText(context, ""+str, Toast.LENGTH_SHORT).show();
        }

    }
}

2.进入MainActivity

package com.example.guangbo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private Receiver3 receiver3;
    private IntentFilter filter3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    protected void onResume() {
        super.onResume();
        receiver3 = new Receiver3();//实例化广播接收者Receiver3
        filter3 = new IntentFilter("myBroadCast");//实例化过滤器并设置要过滤的广播
        registerReceiver(receiver3,filter3);

        Intent intent = new Intent();
        //设置广播的名字(设置Action)
        intent.setAction("myBroadCast");
        //携带数据
        intent.putExtra("data","广播发送成功");
        //发送广播(无序广播)
        sendBroadcast(intent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver3);
    }
}

实现

页面1
Intent intent = new Intent();
                intent.putExtra("nicknames",editNickname.getText().toString().trim());
                intent.setAction("com.bw.paper.nickname");
                sendBroadcast(intent);
                finish();
页面2
public class UserBroadCast extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("com.bw.paper.nickname")) {
                String nicknames = intent.getStringExtra("nicknames");
                updatenames(nicknames);
            }
        }
    }

oncreate方法中注册
userBroadCast = new UserBroadCast();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.bw.paper.nickname");
        registerReceiver(userBroadCast,filter);
        
@Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(userBroadCast);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值