如何限制广播到自己的Android应用程序

时间:2013-08-08 06:58:45

标签: android broadcastreceiver

我想知道是否可以创建私人广播。 我实际上在我的活动中注册了broadcastreceiver并使用

sendOrderedBroadcast(broadcast);

发送广播的方法。 但是,目前,用于此方法的意图(广播)定义如下:

Intent broadcast = new Intent("com.mypackage.broadcast");

因此,声明此包名称的每个外部应用程序都可以监听我发送的内容,而且我不想这样做。

那么如何让这个变得不可能,没有人能听我的广播?

2 个答案:

答案 0 :(得分:6)

我认为您正在寻找LocalBroadcast Manager。文档说:

  

注册并向您的进程中的本地对象发送Intents广播是一个帮手。与使用sendBroadcast(Intent)发送全局广播相比,这有许多优点。其中之一就是您播放的数据不会离开您的应用,因此无需担心泄露私人数据。

有关详情,请参阅how to use LocalBroadcastManager?。希望它能帮到你。

答案 1 :(得分:2)

要使LocalBroadcast Manager正常运行,该应用应该正在运行。

要制定一项通用策略,仅将Android广播限制为您自己的应用,我们可以按照以下步骤进行操作。

Intent intent = new Intent();
String packageName = context.getApplicationContext().getPackageName();
intent.setAction(packageName + "<MY_ACTION>");
context.sendBroadcast(intent);

由于应用程序包对于android上的所有应用程序都是唯一的,因此可以安全地将Broadcast限制为您自己的应用程序,并且您可以在AndroidManifest.xml中注册BroadcastReceivers。