最近在分析SystemUI时,发现其AndroidManifest.xml文件中,配置了两个receiver:
<!-- Callback for dismissing screenshot notification after a share target is picked -->
<receiver android:name=".screenshot.GlobalScreenshot$TargetChosenReceiver"
android:process=":screenshot"
android:exported="false" />
<!-- Callback for deleting screenshot notification -->
<receiver android:name=".screenshot.GlobalScreenshot$DeleteScreenshotReceiver"
android:process=":screenshot"
android:exported="false" />
发现这两个receiver都没有配置Intent-Filter指定action,就在想这种配置方式,怎样收到广播呢?
试验之后,发现这种情况下,使用下面几种方式都可以是receiver接收到广播:
(1) intent.setClass(MainActivity.this,MyBroadcastReceiver.class);
(2) intet.setComponent(new Component(MainActivity.this,MyBroadcastReceiver.class));2)
(3) intet.setComponent(new Component(MainActivity.this.getPackageName(),MyBroadcastReceiver.class.getName());
总之就是设置好接收广播的 类即可。