一.动态注册广播-监听网络变化
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private MyBroadcast myBroadcast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//这个action不能错
myBroadcast = new MyBroadcast();
registerReceiver(myBroadcast,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myBroadcast);//记得动态注册的关闭一定要取消注册
}
class MyBroadcast 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(context, "网络可用", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "网络不可用", Toast.LENGTH_SHORT).show();
}
}
}
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
运行吧网络关闭可以看见效果,建议真机运行
二.静态注册广播-实现开机启动
在包下-new -other-Broadcast Recevier创建
然后修改它的内容看效果
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
Toast.makeText(context, "你好,我是开机自启动的", Toast.LENGTH_SHORT).show();
}
}
然后再manifest文件里配置
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
运行后关机再开机就可以看见效果了
三.发送自定义广播
与第二个差不多,就是action变成我们自己定义的
<receiver
android:name=".MyReceiver2"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="aaa" />
</intent-filter>
</receiver>
Button btn=findViewById(R.id.aa);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("aaa");
sendBroadcast(intent);
Log.i("TAG", "onClick: **********************");
}
});