【问题标题】:Are system actions/intents sent with certain permission level?系统操作/意图是否以特定权限级别发送?
【发布时间】:2013-07-23 23:37:07
【问题描述】:

例如,当我们为 WifiManager.WIFI_STATE_CHANGED_ACTION 注册 BroadcastRecievier 时,我们会在应用的清单中添加所需的权限值:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

这是否意味着以类似于sendBroadcast(intent, "android.permission.ACCESS_WIFI_STATE") 的方式广播给定的权限?

我尝试注册此事件并指定确切的权限:

registerReceiver(receiver, filter, "android.permission.ACCESS_WIFI_STATE", null)

,但是没有收到。

我错过了什么吗?

【问题讨论】:

  • 我不知道您需要该权限才能收听该广播。它当然没有记录为必需的。
  • @CommonsWare 问题在于,不仅不需要它,而且事实上,如果在registerReceiver 不再传递意图时设置了权限 - 我已经验证过,尝试不同的权限值.

标签: android android-intent broadcastreceiver android-permissions


【解决方案1】:

你是部分正确的。 sendBroadcast 方法被系统框架调用为 sendBroadcast(intent, "android.permission.ACCESS_WIFI_STATE")。但重点是,第二个参数只是为了让android系统交叉检查接收组件/应用程序是否有这个权限。
但是 registerReceiver(receiver, filter, "android.permission.ACCESS_WIFI_STATE", null) 是完全不同的情况。此方法中的权限字符串意味着,此特定广播只能由清单中使用此权限的应用程序发送。它类似于清单中的 android:permission 属性。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 2015-10-13
    • 2019-12-30
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多