首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中设置广播发送方和接收方的权限

如何在android中设置广播发送方和接收方的权限
EN

Stack Overflow用户
提问于 2012-08-02 11:49:18
回答 5查看 59.2K关注 0票数 36

我们如何在广播发送应用程序中指定哪个应用程序可以接收此广播,以及在接收应用程序中指定哪个特定应用程序有权将广播发送到其广播接收器...

我是android的新手。我在互联网上阅读了文档等,但找不到指定这些权限的语法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-02 11:54:12

在清单的接收方标记中使用意图筛选器

代码语言:javascript
复制
 <receiver
    android:name="Your receiver"
    android:enabled="true"
    android:exported="false" >
    <intent-filter>
        <action android:name="action"/>
        <category android:name="category" />
    </intent-filter>
</receiver>

将广播发送到应用程序

代码语言:javascript
复制
   Intent intent = new Intent();
   intent.setAction("use same action in receiver");
   intent.addcategory("use same category in receiver");
   context.sendBroadcast(intent); 
票数 3
EN

Stack Overflow用户

发布于 2013-03-10 06:10:59

要控制谁可以接收广播消息,可以使用方法sendBroadcast

代码语言:javascript
复制
public abstract void sendBroadcast (Intent intent, String receiverPermission)

在其中精确指定所需权限的名称。如果接收方不声明此权限,它将无法获取消息。例如,广播发送器可以执行以下操作:

代码语言:javascript
复制
Intent broadcast = new Intent(this, MyBroadcastReceiver.class);
sendBroadcast(broadcast, "andro.jf.mypermission");

在广播发送者的清单中,应该声明一个新的权限:

代码语言:javascript
复制
<!--  Declaring the special permission -->
<permission android:name="andro.jf.mypermission" 
        android:label="my_permission" 
        android:protectionLevel="dangerous"></permission>

然后,在应该接收此广播的应用程序中,您必须声明此权限并声明您使用它。在清单中,您可以添加:

代码语言:javascript
复制
<!--  I use the permission ! -->
<uses-permission android:name="andro.jf.mypermission"/>

当然,你必须声明你的广播接收器:

代码语言:javascript
复制
<receiver android:name="MyBroadcastReceiver" android:exported="true" />

您可以在this post中查看自定义权限的完整示例,以及有关这方面的android developer page。要小心你的应用程序的安装顺序,因为它定义了权限should be installed first

票数 87
EN

Stack Overflow用户

发布于 2014-02-03 00:59:52

如果您想限制谁只能向您的广播接收器发送意图,请执行以下操作:

broadcast receiver

代码语言:javascript
复制
<manifest ...>

    <!-- Permission declaration -->
    <permission android:name="my.app.PERMISSION" />

    <receiver 
        android:name="my.app.BroadcastReceiver"
        android:permission="my.app.PERMISSION"> <!-- Permission enforcement for delivering intents to this receiver -->
        <intent-filter>
            <action android:name="my.app.Action" />
        </intent-filter>
    </receiver>

    ...
</manifest>

广播发送器

代码语言:javascript
复制
<manifest ...>
    <!-- We declare we own the permission to send broadcast to the above receiver -->
    <uses-permission android:name="my.app.PERMISSION" />

    ...
</manifest>

将广播从发送方活动发送到接收方

代码语言:javascript
复制
Intent intent = new Intent();
intent.setAction("my.app.Action");
activity.sendBroadcast(intent);

如果您像这样声明权限:

代码语言:javascript
复制
<permission android:protectionLevel="signature" android:name="my.app.PERMISSION" />

然后,发送方将能够使用此权限,并且仅当发送方接收方应用程序都由相同的开发人员证书签名时,才能向接收方发送广播。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11770794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档