我想知道是否可以创建私人广播。 我实际上在我的活动中注册了broadcastreceiver并使用
sendOrderedBroadcast(broadcast);
发送广播的方法。 但是,目前,用于此方法的意图(广播)定义如下:
Intent broadcast = new Intent("com.mypackage.broadcast");
因此,声明此包名称的每个外部应用程序都可以监听我发送的内容,而且我不想这样做。
那么如何让这个变得不可能,没有人能听我的广播?
答案 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。