学习第一行代码时,编写书中demo时,发现静态广播无法接收,百度和谷歌后发现,android8.0后对于静态广播的限制增大。
//该方式对于8.0以下系统有用
Intent intent=new Intent("com.example.broadcast.MY_BROADCAST");
sendBroadcast(intent);
8.0及以上系统,有两种方式,setComponent()和addFlags()
- 使用setComponent()方法
Intent intent2=new Intent("name.pabo.broadcasttest.MY_RECEIVERED");
//第一个参数是包名,第二个参数是广播接收器类的路径
intent2.setComponent(new ComponentName("name.pabo.broadcasttest.broadcast","name.pabo.broadcasttest.broadcast.MyReceiver"));
sendBroadcast(intent2);
- 使用addFlags()方法
Intent intent1=new Intent("name.pabo.broadcasttest.broadcast.MY_BROADCAST");
//android studio中会报错,但可以build
intent1.addFlags(0x01000000);
sendBroadcast(intent1);
setComponent()方法适用于启动同一应用内广播,addFlags()适用于通知其他应用
网友评论