Android高版本静态广播

学习第一行代码时,编写书中demo时,发现静态广播无法接收,百度和谷歌后发现,android8.0后对于静态广播的限制增大。

//该方式对于8.0以下系统有用  
Intent intent=new Intent("com.example.broadcast.MY_BROADCAST");
  sendBroadcast(intent);

8.0及以上系统,有两种方式,setComponent()和addFlags()

  1. 使用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);
  1. 使用addFlags()方法
  Intent intent1=new Intent("name.pabo.broadcasttest.broadcast.MY_BROADCAST");
  //android studio中会报错,但可以build
  intent1.addFlags(0x01000000);
  sendBroadcast(intent1);

setComponent()方法适用于启动同一应用内广播,addFlags()适用于通知其他应用

你可能感兴趣的:(Android高版本静态广播)