2014-04-19 55 views
0

在Android中,如果我使用隐式意图从应用程序发送意图,并且有两个服务具有匹配的意图过滤器,哪个服务将被调用?Android多服务匹配意图

我知道的活动,用户将被要求通过弹出窗口的选择。 Android如何在服务中做出决定?

谢谢。

回答

2

报价myself

另外,如果有要求,支持安装在设备上的两个(或更多)的服务发生了什么相同的<intent-filter>,但有不同的包名称?您可能会认为这会在安装时失败,就像使用重复权限的提供商那样。唉,事实并非如此。相反,再一次,“赢”的第一个。

所以,如果我们有BadServiceGoodService,既响应相同<intent-filter>,和客户端应用程序试图通过明确意图匹配的是<intent-filter>,它实际上可能与BadService沟通,简单地传达给GoodService因为BadService安装第一。用户无视这一点。

这个故事的道德:不要使用隐含Intents与服务。

+0

那么基本上它的安装顺序是? – Jake

+0

这与服务有关,但现在我也很好奇Android中是否还有其他类似的情况。你知道其他人吗? – Jake

+1

@Jake:实际上,我应该链接到[稍后的博客文章](http://commonsware.com/blog/2013/11/07/troubling-tale-android-priority.html)。第一个决胜者是'android:priority',尽管这是没有记录的服务。安装顺序是第二个决胜盘。在这方面,服务有点像有序的广播,第一个接收者总是中止广播。 – CommonsWare

1

他们会考虑优先级:

<intent-filter android:icon="drawable resource" 
       android:label="string resource" 
       android:priority="integer" > 
    . . . 
</intent-filter>