MainActivity.class
public class MainActivity extends BaseActivity { private IntentFilter filter; private NetWorkChangeReceiver receiver; @Override protected int bindLayout() {//加载布局文件 return R.layout.activity_main; } @Override protected void initView() {//初始化控件 filter = new IntentFilter();//创建意图过滤器 //添加网络变化的广播 filter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); receiver = new NetWorkChangeReceiver();//创建广播监听器 registerReceiver(receiver, filter);//注册广播 } protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver);//解除注册 } //监听网络变化的广播 class NetWorkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //判断网络连接还是没有连接 ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { Toast.makeText(MainActivity.this, "网络已连接", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "网络断开", Toast.LENGTH_SHORT).show(); } } } }AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidbroadcastreceiver"> <!-- 添加网络数据权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>MainActivity.class
public class MainActivity extends BaseActivity { /*标准广播 发送标准广播(开启另一个程序) 步骤: 1.首先创建一个新项目 2.在新项目中创建广播接受器,在onReceive方法中 public void onReceive(Context context, Intent intent) { intent = new Intent(context,MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//开启一个新栈 context.startActivity(intent); 3.在新项目清单中注册广播添加发送的广播频道 <action android:name="com.example.androidbroadcastreceiver.receiver.MyBroadcastReceiver" /> **在现在的程序中点击发送广播就能启动另一个程序了。** */ @Override protected int bindLayout() { return R.layout.activity_standard_broadcast_receiver; } public void standardBR(View view) { Intent intent = new Intent("com.example.androidbroadcastreceiver.receiver.MyBroadcastReceiver"); //intent.putExtra("广播", 2);//这里可以设置传值 sendBroadcast(intent); } }MainActivity.class
/*有序广播 发送有序广播(优先级高的 优先接收到广播) 3.设置优先级intent-filter android:priority="100" 优先级高的优先收到广播 拦截(abortBroadcast())以后广播终端 */ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order_broadcast_receiver); } public void orderBR(View view) {//打开有序广播 Intent intent = new Intent("com.example.androidbroadcastreceiver.receiver.MyBroadcastReceiver"); intent.putExtra("广播", 3); sendOrderedBroadcast(intent, null);//发送有序广播需要两个参数1.intent 2.权限参数设置为null } }MyBroadcastReceiver.class
//广播接受器 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getIntExtra("广播", 0) == 3) { Toast.makeText(context, "发送有序广播(优先级高的 优先接收到广播)\n" + "并且终止广播禁止程序启动", Toast.LENGTH_SHORT).show(); } abortBroadcast();//广播拦截,禁止向下传递 } }AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidbroadcastreceiver"> <!-- 添加网络数据权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 添加开机通知权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".receiver.MyBroadcastReceiver" android:enabled="true" android:exported="true"> <!-- 设置优先级 --> <intent-filter android:priority="100"> <action android:name="com.example.androidbroadcastreceiver.receiver.MyBroadcastReceiver" /> </intent-filter> </receiver> </application> </manifest>MainActivity.class
/* 自定义广播 */ public class MainActivity extends BaseActivity { @Override protected int bindLayout() { return R.layout.activity_custom_broadcast_receiver; } public void customBR(View view) {//打开自定义广播 Intent intent = new Intent("com.example.androidbroadcastreceiver.receiver.CustomBroadcastReceiver"); intent.putExtra("zdy", "自定义广播"); sendBroadcast(intent); } }CustomBroadcastReceiver.class
/*自定义广播接受器 步骤: 1.创建广播接受器是必须勾选enabled、exported,否者接受不到广播 android:enabled="true" android:exported="true" 2.创建Intent i= new Intent("发送的广播"); 可以传值i.putString("标记","值"); sendBroadcast(intent); 然后接受器就能就收到广播啦! */ public class CustomBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, intent.getStringExtra("zdy"), Toast.LENGTH_SHORT).show(); } }AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidbroadcastreceiver"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 添加自定义广播 --> <receiver android:name=".receiver.CustomBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.example.androidbroadcastreceiver.receiver.CustomBroadcastReceiver" /> </intent-filter> </receiver> </application> </manifest>LocalBroadcastReceiverActivity.class
/* 本地广播 步骤: 1.首先创建LocalBroadcastManager对象管理广播、IntentFilter、LocalReceiver(广播接受器) 2.通过manager来注册、和解绑广播 3.本地广播只能在自身应用程序中使用,安全性高 */ public class LocalBroadcastReceiverActivity extends AppCompatActivity { private LocalBroadcastManager manager; private IntentFilter filter; private LocalReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_broadcast_receiver); manager = LocalBroadcastManager.getInstance(this); filter = new IntentFilter(); filter.addAction("com.example.androidbroadcastreceiver.activity.LocalBroadcastReceiverActivity.LocalReceiver"); receiver = new LocalReceiver(); manager.registerReceiver(receiver, filter); } public void localBR(View view) {//打开本地广播 安全不能跳转到别的程序 Intent intent = new Intent("com.example.androidbroadcastreceiver.activity.LocalBroadcastReceiverActivity.LocalReceiver"); intent.putExtra("bd", "我是刚创建的本地广播\n" + "不能走出这个应用程序"); manager.sendBroadcast(intent); } @Override protected void onDestroy() { super.onDestroy(); manager.unregisterReceiver(receiver); } class LocalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, intent.getStringExtra("bd"), Toast.LENGTH_SHORT).show(); } } } End!