Android8.0之前
若要在不打开app的情况下,接受隐式广播,需要将targetSdkVersion 在 25或以下的App,其Receiver不受影响,即使在Android8.0以上的机器上运行
隐式广播
val intent = Intent("com.daban.broadcast")
this.sendBroadcast(intent)
显式广播
val intent = Intent(this,MyReceiver::class.java)
//val intent = Intent()
//或intent.setComponent(ComponentName("com.daban.testservice","com.daban.testservice.BootReceiver"))
//或intent.setPackage("com.daban.testservice")
this.sendBroadcast(intent)
Android8.0之后
都需要接收广播的app打开,也就是运行起来,才能收到广播
隐式广播
val intent = Intent("com.daban.broadcast")
//本应设置Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND,由于是系统api无法使用,直接使用其值替代
//但是会爆红,使用@SuppressLint("WrongConstant")镇压
intent.setFlags(0x01000000)
this.sendBroadcast(intent)
显式广播
val intent = Intent(this,MyReceiver::class.java)
//val intent = Intent()
//需要接受广播应用的包名和类名参数(下面两个在跨应用的广播使用)
//或intent.setComponent(ComponentName("com.daban.testservice","com.daban.testservice.BootReceiver"))
//或intent.setPackage("com.daban.testservice")
this.sendBroadcast(intent)