我有一个广播接收器,它声明了系统广播的意图过滤器,如下所示:
<receiver android:name=".StartAppReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
接收方正确接收广播。但是,根据文档,此接收器已导出,因此其他应用程序可以向此接收器发送意图。
为防止其他应用向接收方发送意图,我可以将其标记为未导出(android:exported="false"
)。我希望这也会阻止系统向它发送意图,从而阻止它接收BOOT_COMPLETED
广播。
然而,尽管没有被导出,它仍然会收到BOOT_COMPLETED
广播,这不是我期望的行为。我已经确认了这种行为:
我也尝试过android.intent.action.MY_PACKAGE_REPLACED
广播并得到相同的结果。
这个 我想要的行为,但我希望exported="false"
能够阻止它接收系统广播,因为它们不是来自我的应用程序。
在不导出的广播接收器中接收系统广播是否正常?我能依靠这种行为吗?
答案 0 :(得分:0)
在我的经验中,模拟器不能作为调用应用程序的良好测试平台。我使用模拟器进行布局大小调整和渲染GL线程。这可以帮助您走上正确的道路。
您可以限制并找出名为intent的包,并在onReceive()中过滤掉。
How to get the sender of an Intent?
干杯!
答案 1 :(得分:-1)
为防止接收广播只是放
enabled:false
接收者标签中的