如何设置广播接收器权限(安全)

4

我有两个应用程序,A和B。

在A中,我有一个广播接收器。在receiver标签(清单文件)中,我指定了一个android:permission字符串(假设为com.example.app.SEND)。现在B不能再向A发送广播了。这很合理!

那么我该怎么做才能让B向A发送广播呢?在B的清单中,我使用了uses-permission标记,并将android:name设置为与接收器的android:permission相同的字符串(com.example.app.SEND),但广播仍然无法从B发送到A。

我做错了什么?还是需要做其他的事情吗?

-- 更新 --

这是我的应用程序A的接收器标记:

    <receiver
        android:name="com.example.app.MyReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="com.example.BReceiver.SEND" >
        <intent-filter>
            <action android:name="com.example.BReceiver" />
        </intent-filter>
    </receiver>

以下是 B 应用的清单文件中的 uses-permission 标签:

<uses-permission android:name="com.pycitup.BReceiver.SEND" />

据我所知,广播是基于操作而非权限工作的,但是如果您使用需要权限的任何操作,则可能需要添加权限。 - EEJ
我指的是这里的Security部分。 - user1437328
2个回答

7

因此,我需要在B的清单中设置与相同字符串相关的自定义权限,如下所示:

<permission android:name="com.pycitup.BReceiver.SEND" />

相当简单明了。只需要在网上阅读一些内容即可。

0
从B创建一个意图,并将操作设置为您的广播接收器名称。
Intent myintentB=new Intent();
myintentB.setAction("com.example.app.SEND");
sendBroadcast(myintentB);

这应该在技术上命中您的接收器。


我认为你在谈论操作,而我正在尝试理解如何强制执行权限。我所指的是这里的Security部分。 - user1437328
权限仅需要接收器知道它可以处理什么。就功能而言,如果不设置操作,则广播接收器永远不会起作用。 - archon92
基本上,我想根据安全指南施加某些限制,因此并非所有应用程序都可以访问接收器。我已更新了问题。 - user1437328

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接