2

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

<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)

,但是甚至不再收到。

我错过了什么吗?

4

1 回答 1

1

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

于 2015-12-11T15:21:21.450 回答