拦截来自外部应用程序的意图

2024-05-10

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

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

问题很简单:如果我创建一个应用程序,即org.zighinetto.tinyapp带有用于意图的广播接收器com.famousvendor.intent.INTENT_NAME will 小应用程序赶上广播吗?或者这些广播只能由触发它们的进程接收?


小应用程序会捕获广播吗?或者这些广播只能由触发它们的进程接收?

有很多因素可以控制这一点。

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

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

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

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

他们不需要专门阻止您的应用程序。他们只需要决定是否真的想要拥有您试图利用的 API,如果这更多的是偶然的 API,他们可能会选择锁定它。他们这样做可能是为了回应一个秃头家伙的博客文章 http://commonsware.com/blog/2013/04/17/do-not-have-accidental-api.html, 例如。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拦截来自外部应用程序的意图 的相关文章