我想知道是否可以创建私人广播。我实际上在我的活动中注册了广播接收器并使用
sendOrderedBroadcast(broadcast);
发送广播的方法。但是,目前,用于此方法的意图(广播)定义如下:
Intent broadcast = new Intent("com.mypackage.broadcast");
因此,每个声明此包名称的外部应用程序都可以监听我正在发送的内容,而我不想这样做。
那么如何使这成为不可能,没有人可以收听我的广播?
我想知道是否可以创建私人广播。我实际上在我的活动中注册了广播接收器并使用
sendOrderedBroadcast(broadcast);
发送广播的方法。但是,目前,用于此方法的意图(广播)定义如下:
Intent broadcast = new Intent("com.mypackage.broadcast");
因此,每个声明此包名称的外部应用程序都可以监听我正在发送的内容,而我不想这样做。
那么如何使这成为不可能,没有人可以收听我的广播?
我认为您正在寻找LocalBroadcast Manager。文档说:
它是注册 Intent 广播并将其发送到进程中的本地对象的助手。与使用 sendBroadcast(Intent) 发送全局广播相比,这具有许多优势。其中之一是您正在广播的数据不会离开您的应用程序,因此不必担心泄露私人数据。
了解如何使用 LocalBroadcastManager?更多。希望它可以帮助你。
要使 LocalBroadcast Manager 工作,应用程序应该正在运行。
要制定一个通用策略来将 Android 广播仅限于您自己的应用程序,我们可以执行以下操作。
Intent intent = new Intent();
String packageName = context.getApplicationContext().getPackageName();
intent.setAction(packageName + "<MY_ACTION>");
context.sendBroadcast(intent);
由于应用程序包对于 android 上的所有应用程序都是唯一的,因此可以安全地将广播限制为您自己的应用程序,您可以在 AndroidManifest.xml 中注册 BroadcastReceivers。