Android 静态广播无法接收

之前的项目都是固定的板卡Android 8.0之前的,今天适配新的板卡 Android 12 上意外发现 广播无法接收到消息 在此记录!

Android 8.0 之后 谷歌对静态广播做了一些限制,具体如下!

从Android 8.0 (API级别26)开始,系统对清单声明的接收者施加了额外的限制。如果你的应用程序的目标是Android 8.0或更高版本,你不能使用清单来为大多数隐式广播(广播不是专门针对你的应用程序)声明一个接收器。当用户正在积极使用你的应用程序时,你仍然可以使用上下文注册的接收器

就这么个意思,怎么改呢?

发送部分代码:

在当前应用发送广播发送:

Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");

intent.putExtra("message", "send a message!!!");

intent.setPackage(getPackageName());

sendBroadcast(intent);

发送给其他应用的广播:

Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");

intent.setComponent(new ComponentName("接收广播的包名", "接收广播的包名.MyBroadcastReceiver"));

intent.putExtra("message", "send a message!!!");

sendBroadcast(intent);

这个地方注意下 setComponent()


两个参数 pkg :发送指定应用的包名  cls :指定发送到广播接收器的类名,必须是全名,带上包名!!!

接收代码:

AndroidManifest中记得增加这个广播权限



最后别忘了注册


这里的exported属性表示是否允许这个广播接收器接收本程序以外的广播,enabled属性表示是否启用这个广播接收器!都得是true

好了,就这样!

你可能感兴趣的:(Android 静态广播无法接收)