之前的項目都是固定的板卡Android 8.0之前的坛吁,今天適配新的板卡 Android 12 上意外發(fā)現(xiàn) 廣播無法接收到消息 在此記錄舷夺!
Android 8.0 之后 谷歌對靜態(tài)廣播做了一些限制委可,具體如下!
就這么個意思扑媚,怎么改呢?
發(fā)送部分代碼:
在當(dāng)前應(yīng)用發(fā)送廣播發(fā)送:
Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.putExtra("message", "send a message!!!");
intent.setPackage(getPackageName());
sendBroadcast(intent);
發(fā)送給其他應(yīng)用的廣播:
Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.setComponent(new ComponentName("接收廣播的包名", "接收廣播的包名.MyBroadcastReceiver"));
intent.putExtra("message", "send a message!!!");
sendBroadcast(intent);
這個地方注意下?setComponent()
兩個參數(shù)?pkg :發(fā)送指定應(yīng)用的包名??cls :指定發(fā)送到廣播接收器的類名雷恃,必須是全名疆股,帶上包名!5够薄旬痹!
接收代碼:
AndroidManifest中記得增加這個廣播權(quán)限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
最后別忘了注冊
這里的exported屬性表示是否允許這個廣播接收器接收本程序以外的廣播,enabled屬性表示是否啟用這個廣播接收器导犹!都得是true
好了唱凯,就這樣羡忘!