5

假设我想开发一个以某种方式扩展的应用程序(让我说“合作”)一个我显然无法控制的非常流行的应用程序。为简单起见,我们还假设非常著名的应用程序作者不会发布更新来阻止我的应用程序。

我研究了应用程序的功能并确定它广泛使用BroadcastReceivers。我也从清单中知道com.famousvendor.intent.INTENT_NAME我可能使用的常量。

问题很简单:如果我创建一个应用程序,即为org.zighinetto.tinyapp意图设置广播接收器,微型应用程序com.famousvendor.intent.INTENT_NAME会捕获广播吗?还是只能由触发它们的进程接收这些广播?

4

1 回答 1

7

小应用程序会捕捉到广播吗?还是只能由触发它们的进程接收这些广播?

有很多东西可以控制这一点。

如果广播受到许可的保护,除非您也持有该许可,否则您将无法接收该广播。您可能无法持有该权限,具体取决于权限的类型。

此外,如果广播是有序广播,则较高优先级的应用程序将接收该广播并可以中止它(消耗该事件,因此较低优先级的接收器不会收到广播)。优先级是通过<intent-filter>(或IntentFilter)设置的,您可能无法拥有比他们自己的应用程序更高优先级的应用程序,具体取决于原始开发人员持有的优先级值。

还有其他仅限本地的场景(例如,LocalBroadcastManager),尽管您不会在清单中看到它们,因此我们可以假设它们不是这里使用的......今天。

为简单起见,我们还假设非常著名的应用程序作者不会发布更新来阻止我的应用程序。

他们不需要专门阻止您的应用程序。他们只需要决定他们是否真的想要拥有您尝试利用的 API,如果这更像是一个意外的 API,他们可能会选择锁定它。例如,他们可能会这样做以回应秃顶人的博客文章

于 2013-04-17T13:09:26.157 回答