【问题标题】:Android: OnBootReceiver: Exported receiver does not require permissionAndroid:OnBootReceiver:导出的接收器不需要权限
【发布时间】:2012-11-11 02:42:41
【问题描述】:

我创建了一个BroadcastReceiver,它接收BOOT_COMPLETED

在我的AndroidManifest.xml 中,我已经这样添加了:

<receiver
    android:name=".OnBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" /> 
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
</receiver>

但是,我收到警告:导出的接收器不需要许可。 我在 SO 上读过它,但我并不完全理解它。

那么有人可以向这位初学者解释一下 :) 为什么我会收到此警告,以及如何应对(以及为什么)?

【问题讨论】:

  • 它只是意味着任何人都可以调用它,因为它是公共的并且不需要许可(接收者可以请求特定的许可才能被调用)
  • @njzk2 但不添加它会使其停止工作?我记得我试过一次,但没有成功,但我的代码有一些问题,所以我不确定。
  • @njzk2 所以实际上,我不必对它采取任何措施?
  • @Merlin :您可以放心地忽略此警告。
  • 在清理和重新扫描 Lint 警告后是否仍然显示此警告?我的清单中有类似的东西但没有警告 - 并试图决定是否应该添加exported="false"。另见here

标签: java android broadcastreceiver android-manifest bootcompleted


【解决方案1】:

您可以通过将android:exported="false" 添加到接收者标签来删除此警告(请参阅此答案:https://stackoverflow.com/a/11526028/757073

【讨论】:

  • 如果设置exported为false,开机完成后还能调用吗?
【解决方案2】:

警告

导出的接收者不需要权限

表示, 您有一个带有某些操作的意图过滤器(这意味着默认情况下您设置了 android:exported="true" 并且它现在可以接收来自应用程序之外的 ANY 广播公司的广播) 由于它可以接收来自您应用程序之外的 ANY 广播公司的广播,因此它会通过说“嘿,您确定 ANY 广播公司可以调用您吗?在我看来,它是如果您只允许那些广播者通过 android:permission"

调用您已为该接收器设置的权限,则更好

希望这很清楚!!!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 2011-05-11
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多