广播发送与接受的两种方式

第一种在JAVA代码中注册接收端:

 1 package com.zzw.broadcast;
 2 
 3 import android.app.Activity;
 4 import android.content.BroadcastReceiver;
 5 import android.content.Context;
 6 import android.content.Intent;
 7 import android.content.IntentFilter;
 8 import android.os.Bundle;
 9 import android.util.Log;
10 import android.view.View;
11 import android.view.View.OnClickListener;
12 
13 public class MainActivity extends Activity {
14     final String action = "com.zzw";
15     BroadcastReceiver mBroadcastReceiver;
16 
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21         init();
22         // 点击按钮发送广播
23         findViewById(R.id.button).setOnClickListener(new OnClickListener() {
24             @Override
25             public void onClick(View v) {
26                 // 发送广播
27                 Intent intent = new Intent();
28                 intent.setAction(action);
29                 intent.putExtra("name", "zzw");
30                 MainActivity.this.sendBroadcast(intent);
31                 Log.e("发送广播的状态-----","发送成功");
32             }
33         });
34     }
35 
36     // 注册接收端
37     private void init() {
38         mBroadcastReceiver = new TestBroadcastReceiver();
39         IntentFilter filter = new IntentFilter(action);// 过滤
40         registerReceiver(mBroadcastReceiver, filter);
41     }
42 
43     private class TestBroadcastReceiver extends BroadcastReceiver {
44         // 接收广播
45         @Override
46         public void onReceive(Context context, Intent intent) {
47             Log.e("接受广播的状态-----", "收到广播");
48             Log.e("收到的action-----", intent.getAction());
49             Log.e("收到的name-------", intent.getExtras().getString("name"));
50         }
51     }
52 
53     // 关闭广播
54     @Override
55     protected void onDestroy() {
56         if (mBroadcastReceiver != null) {
57             unregisterReceiver(mBroadcastReceiver);
58         }
59         super.onDestroy();
60     }
61 }

第二种在AndroidManifest中注册接收端:

发送的代码:

 1 package com.zzw.broadcast2;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.view.View;
 8 import android.view.View.OnClickListener;
 9 
10 public class MainActivity extends Activity {
11     String action = "com.zzw";
12 
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17         findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
18             @Override
19             public void onClick(View v) {
20                 Intent intent = new Intent(action);
21                 intent.putExtra("name", "zzw");
22                 MainActivity.this.sendBroadcast(intent);
23                 Log.e("发送的状态-----", "发送成功");
24             }
25         });
26     }
27 }

接收的代码:

 1 package com.zzw.broadcast2;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.util.Log;
 7 
 8 public class TestReceiver extends BroadcastReceiver {
 9 
10     @Override
11     public void onReceive(Context context, Intent intent) {
12         Log.e("接收的状态-----", "接受成功");
13         Log.e("接受到的action---", intent.getAction());
14         Log.e("接受到的name-----", intent.getExtras().getString("name"));
15     }
16 }

AndroidManifest中注册接收端代码:在application中,与activity同级

1  <receiver android:name="com.zzw.broadcast2.TestReceiver" >
2 
3             <!-- 过滤器 -->
4             <intent-filter>
5                 <action android:name="com.zzw" />
6             </intent-filter>
7         </receiver>
原文地址:https://www.cnblogs.com/zzw1994/p/4935917.html