7

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

sendOrderedBroadcast(broadcast);

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

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

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

那么如何使这成为不可能,没有人可以收听我的广播?

4

2 回答 2

6

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

它是注册 Intent 广播并将其发送到进程中的本地对象的助手。与使用 sendBroadcast(Intent) 发送全局广播相比,这具有许多优势。其中之一是您正在广播的数据不会离开您的应用程序,因此不必担心泄露私人数据。

了解如何使用 LocalBroadcastManager?更多。希望它可以帮助你。

于 2013-08-08T06:59:58.353 回答
1

要使 LocalBroadcast Manager 工作,应用程序应该正在运行。

要制定一个通用策略来将 Android 广播仅限于您自己的应用程序,我们可以执行以下操作。

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

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

于 2016-07-02T13:12:38.010 回答