DialRecordReceiver.java
public class DialRecordReceiver extends LocalBroadcastReceiver {
public DialRecordReceiver(Context context) {
super(context);
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String jsonString = intent.getStringExtra("json");
if (action.equals(LocalAction.DIAL_RECORD_ACTION_BE_INVITED)) {
Log.d("panzq", "【====jsonString = 】" + jsonString);
}
}
}
LocalBroadcastReceiver.java
public abstract class LocalBroadcastReceiver extends BroadcastReceiver {
private final Context context;
public LocalBroadcastReceiver(Context context) {
this.context = context.getApplicationContext();
}
/**
* 注册需要接收到的广播
*
* @param actions 需要接收到的广播列表
*/
public void register(String... actions) {
if (actions == null) {
return;
}
IntentFilter intentFilter = new IntentFilter();
for (String action : actions) {
intentFilter.addAction(action);
}
LocalBroadcastManager.getInstance(context).registerReceiver(this, intentFilter);
}
public void unRegister() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(this);
}
}
LocalReceiver.java
public class LocalReceiver extends LocalBroadcastReceiver {
public LocalReceiver(Context context) {
super(context);
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String jsonString = intent.getStringExtra("json");
if (action.equals(LocalAction.WS_VIDEOMEETING_REQUEST)) {
Log.d("panzq", "【jsonString = 】" + jsonString);
}
}
}
LocatiopnBroadcast.java
public class LocatiopnBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("panzq","======"+intent.getAction());
if (intent.getAction().equals(MainActivity.BROADCAST_ACTION_DISC))
{
Log.d("panzq","====="+intent.getStringExtra("broacast1"));
}
}
}
MainActivity.java
public class MainActivity extends Activity {
private LocatiopnBroadcast locatiopnBroadcast;
public static final String BROADCAST_ACTION_DISC = "com.panzq.LocatiopnBroadcast";
private LocalReceiver localReceiver;
private DialRecordReceiver dialRecordReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. 实例化BroadcastReceiver子类 & IntentFilter
locatiopnBroadcast = new LocatiopnBroadcast();
IntentFilter intentFilter = new IntentFilter();
// 2. 设置接收广播的类型
intentFilter.addAction(BROADCAST_ACTION_DISC);// 只有持有相同的action的接受者才能接收此广播
// 3. 动态注册:调用Context的registerReceiver()方法
registerReceiver(locatiopnBroadcast, intentFilter);
localReceiver = new LocalReceiver(this);
localReceiver.register(LocalAction.WS_VIDEOMEETING_REQUEST);
dialRecordReceiver = new DialRecordReceiver(this);
dialRecordReceiver.register(LocalAction.DIAL_RECORD_ACTION_BE_INVITED);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(locatiopnBroadcast);
if (localReceiver != null) {
localReceiver.unRegister();
}
if (dialRecordReceiver != null) {
dialRecordReceiver.unRegister();
}
}
public void myclick(View V) {
String name = "zhangsan";
Intent intent = new Intent();
//BROADCAST_ACTION_DISC,用于标识接收
intent.setAction(BROADCAST_ACTION_DISC);
intent.putExtra("broacast1", "1111111111");
//发送广播
sendBroadcast(intent);
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(LocalAction.WS_VIDEOMEETING_REQUEST).putExtra("json", "2222222222"));
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(LocalAction.DIAL_RECORD_ACTION_BE_INVITED).putExtra("json", name));
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/to_otherActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="to_otherActivity"
android:onClick="myclick" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
build.gradle
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
