1、静态广播
1、创建一个MyBroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"我接收到广播了",Toast.LENGTH_SHORT).show();
}
}
MyBroadcastReceiver继承BroadcastReceiver ,重写onReceive方法用来接收广播
2、在AndroidMainfast中注册Broadcast
<receiver android:name=".MyBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>
意思是让MyBroadcastReceiver接受一条com.example.broadcasttest.MY_BROADCAST的广播
3、发送广播
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
//发送默认(无序)广播
sendBroadcast(intent);
//发送有序广播
sendOrderedBroadcast(intent,null);
4、有序广播
如果发送有序广播可以在AndroidMainfast里面通过priority设置广播的优先级
<receiver android:name=".MyBroadcastReceiver"
android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.example.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>
在MyBroadcastReceiver通过abortBroadcast截断广播
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"我接收到广播了",Toast.LENGTH_SHORT).show();
abortBroadcast();
}
}
2、动态广播
1、创建一个MyBroadcastReceiver
private class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Toast.makeText(context,"network change",Toast.LENGTH_SHORT).show();
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
@SuppressLint("MissingPermission") NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo !=null && networkInfo.isAvailable()){
Toast.makeText(context,"网络已连接",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,"网络已断开",Toast.LENGTH_SHORT).show();
}
}
}
MyBroadcastReceiver继承Broadcast,重写onReceive方法用来接收广播。在onReceive方法里面写了一个对网络开关做出反应的代码
2、在onCreate方法里面注册广播
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broadcast);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);
}
3、在onDestroy方法里面销毁广播
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}