我们如何在广播发送应用程序中指定哪个应用程序可以接收此广播,以及在接收应用程序中指定哪个特定应用程序有权将广播发送到其广播接收器...
我是android的新手。我在互联网上阅读了文档等,但找不到指定这些权限的语法。
发布于 2012-08-02 11:54:12
在清单的接收方标记中使用意图筛选器
<receiver
android:name="Your receiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="action"/>
<category android:name="category" />
</intent-filter>
</receiver>将广播发送到应用程序
Intent intent = new Intent();
intent.setAction("use same action in receiver");
intent.addcategory("use same category in receiver");
context.sendBroadcast(intent); 发布于 2013-03-10 06:10:59
要控制谁可以接收广播消息,可以使用方法sendBroadcast
public abstract void sendBroadcast (Intent intent, String receiverPermission)在其中精确指定所需权限的名称。如果接收方不声明此权限,它将无法获取消息。例如,广播发送器可以执行以下操作:
Intent broadcast = new Intent(this, MyBroadcastReceiver.class);
sendBroadcast(broadcast, "andro.jf.mypermission");在广播发送者的清单中,应该声明一个新的权限:
<!-- Declaring the special permission -->
<permission android:name="andro.jf.mypermission"
android:label="my_permission"
android:protectionLevel="dangerous"></permission>然后,在应该接收此广播的应用程序中,您必须声明此权限并声明您使用它。在清单中,您可以添加:
<!-- I use the permission ! -->
<uses-permission android:name="andro.jf.mypermission"/>当然,你必须声明你的广播接收器:
<receiver android:name="MyBroadcastReceiver" android:exported="true" />您可以在this post中查看自定义权限的完整示例,以及有关这方面的android developer page。要小心你的应用程序的安装顺序,因为它定义了权限should be installed first。
发布于 2014-02-03 00:59:52
如果您想限制谁只能向您的广播接收器发送意图,请执行以下操作:
broadcast receiver
<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>广播发送器:
<manifest ...>
<!-- We declare we own the permission to send broadcast to the above receiver -->
<uses-permission android:name="my.app.PERMISSION" />
...
</manifest>将广播从发送方活动发送到接收方
Intent intent = new Intent();
intent.setAction("my.app.Action");
activity.sendBroadcast(intent);如果您像这样声明权限:
<permission android:protectionLevel="signature" android:name="my.app.PERMISSION" />然后,发送方将能够使用此权限,并且仅当发送方和接收方应用程序都由相同的开发人员证书签名时,才能向接收方发送广播。
https://stackoverflow.com/questions/11770794
复制相似问题