如何注册具有权限的动态广播接收器?

jM2*_*.me 5 permissions android broadcastreceiver android-intent

我正在尝试在我的服务中设置一个动态广播接收器来接收来自另一个应用程序的广播。扭曲的是我想要求广播公司拥有特定的权限。

在服务应用程序的 AndroidManifest 文件中,我使用正常保护级别创建了权限。将要广播的应用程序正在使用上述权限。广播发送如下:

Intent intent = new Intent();
intent.setAction(Utils.ACTION_SEND_BUS_MESSAGE);
intent.putExtra(BusMessage.class.getSimpleName(), msg);
sendBroadcast(intent, Utils.PERMISSION_SEND_MESSAGE);
Run Code Online (Sandbox Code Playgroud)

并在服务接收器注册为:

registerReceiver(receiver, receiver.getIntentFilter(), Utils.PERMISSION_SEND_MESSAGE, null);
Run Code Online (Sandbox Code Playgroud)

不幸的是广播没有到达接收器。从 sendBroadcast 和 registerReceiver 删除权限确实允许接收广播。

我还测试了广播公司,以确保授予所需的许可,确实如此。

Com*_*are -1

不同的是我想要求广播公司拥有特定的权限。

但是,您在代码中编写的内容远不止于此。

广播发送如下:

在您的代码中,您使用sendBroadcast(intent, Utils.PERMISSION_SEND_MESSAGE). 引用该风格的文档sendBroadcast()(添加重点):

命名接收者必须持有才能接收您的广播的权限的字符串。

sendBroadcast()要求接收器容纳任何Utils.PERMISSION_SEND_MESSAGE东西,但显然它没有。