动态注册发送广播
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);
}