Android:是非导出的广播接收器吗?

Jef*_*man 13 android broadcastreceiver android-broadcast

如果我在这样的活动中注册广播接收器,

@Override
protected void onResume() {
    super.onResume();

    myReceiver = new BroadcastReceiver() { ... };
    IntentFilter filter = new IntentFilter("com.example.MY_ACTION");
    registerReceiver(myReceiver, filter);
}
Run Code Online (Sandbox Code Playgroud)

这个接收器是出口的?如果另一个应用程序广播com.example.MY_ACTION,是否会收到myReceiver

如果是,我假设我需要使用registerReceiver()接受字符串权限的形式,然后在我的清单中定义该权限,为其提供高保护级别(例如签名).那是对的吗?有更简单的方法吗?

谢谢.

Kae*_*iil 4

来自 BroadcastReceiver API 的 api 文档:

如果您不需要跨应用程序发送广播,请考虑将此类与LocalBroadcastManager一起使用一起使用,而不是使用下面描述的更通用的功能。这将为您提供更有效的实现(无需跨进程通信),并允许您避免考虑与其他应用程序能够接收或发送广播相关的任何安全问题。

这样至少您可以将接收器仅保留在您的应用程序中。

  • 虽然这在技术上并不能回答我的问题,但它是隐含问题的解决方案。 (2认同)