拦截外部应用程序的意图

时间:2013-04-17 12:33:33

标签: android broadcastreceiver

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

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

问题很简单:如果我创建了一个应用程序,即org.zighinetto.tinyapp,其广播接收器设置为意图com.famousvendor.intent.INTENT_NAME小应用程序捕获广播?或者这些广播只能通过激发它们的过程接收?

1 个答案:

答案 0 :(得分:7)

  

这个小应用程序会接收广播吗?或者这些广播只能通过激发它们的过程接收?

有许多事情可以控制这一点。

如果广播是在获得许可的情况下获得保护的,除非您同意该广播,否则您将无法接收该广播。您可能无法持有该权限,具体取决于其权限类型。

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

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

  

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

他们不需要专门阻止您的申请。他们只需要决定他们是否真的想拥有你想要利用的API,如果这更像是一个偶然的API,他们可能会选择将其锁定。例如,他们可能会这样做以响应a blog post by a balding guy