2013-04-17 55 views
5

假设我想开发一种以某种方式扩展的应用程序(让我说“合作”)一个非常流行的应用程序我显然没有控制权。为了简单起见,我们还假设非常着名的应用程序作者不会发布更新以阻止我的应用程序。拦截来自外部应用程序的意图

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

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

+4

是的,你可以。 (另外,回答这个问题的一个快速方法是对它进行实际测试) – njzk2

+0

我在设计初期阶段,所以如果我认为做一个概念证明比询问其他同行的经验更长的工作,请给我道歉 –

回答

7

这个小应用程序会捕捉广播吗?或者这些广播是否只能由触发它们的过程接收?

有很多东西可以控制这个。

如果广播是通过许可进行保护的,那么除非您持有该许可,否则您将无法接收该广播。您可能无法拥有该权限,具体取决于它的权限类型。另外,如果广播是有序广播,则较高优先级的应用将接收该广播并可以中止它(消耗该事件,因此较低优先级的接收器不会获得广播)。优先级通过<intent-filter>(或IntentFilter)进行设置,并且您可能无法拥有比自己的应用更高的优先级,具体取决于原始开发人员拥有的优先级值。

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

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

他们不需要特别阻止你的应用程序。他们只需要决定他们是否真的想要试用API,如果这是一个意外的API,他们可能会选择锁定它。例如,他们可能会这样做,以响应a blog post by a balding guy

+0

I'毫无疑问会利用意外的API。感谢您的澄清。另外,当我说“阻止我的申请”时,我并不是指特定的区块,而只是“阻止我[和其他人]利用他们的广播的任何措施”,而且事实上也属于这种情况 –

相关问题