选择是否应该将广播接收器导出并显示给设备上的其他应用程序。如果该接收器正在收听从系统或其他应用程序(甚至您自己拥有的其他应用程序)发送的广播,则使用RECEIVER_EXPORTED标志。如果这个接收器只监听应用程序发送的广播,请使用RECEIVER_NOT_EXPORTED标志。
这就是google解释的RECEIVER_EXPORTED,RECEIVER_NOT_EXPORTED
当我想使用从系统发送的广播时,谷歌说我需要使用RECEIVER_EXPORTED
但是当我用"android.intent.action.AIRPLANE_MODE“和"RECEIVER_NOT_EXPORTED”测试时
我收到了广播节目。
有人能解释这句话吗?
发布于 2022-11-14 14:59:05
他们的文档中可能有错误,或者他们改变了主意,因为根据ContextCompat文档,您可以使用:
RECEIVER_NOT_EXPORTED如果您只希望您的接收器能够接收来自系统或您自己的应用程序的广播。
在我看来,这样更安全,因为我们不希望我们的接收器只为了获得系统广播而对所有的应用程序开放。
(编辑)我也找到了这个出口文件
具有与使用"exported=false“标记静态注册接收器相同的行为。
当我查看接收者文件,对于导出的属性,我读到:
如果"false",则广播接收方可以接收的唯一消息是系统发送的消息、同一应用程序的组件或具有相同用户ID的应用程序。
所以我很有信心实现是一致的,文档中有一个小错误
https://stackoverflow.com/questions/74272587
复制相似问题