intent过滤器如何在android中运行

时间:2014-03-05 10:55:14

标签: android android-intent intentfilter

在Android中,如果有两个以上的应用程序可以接收相同的意图,则会弹出一个对话框,要求用户选择执行该操作的应用程序

例如:当用户点击任何链接时,它会弹出以下对话框enter image description here

所以我的问题是哪个应用会执行此对话显示以询问用户。

如果有人解释它是如何工作的,将不胜感激 非常感谢。

2 个答案:

答案 0 :(得分:1)

此对话框由操作系统打开。它检查其他应用程序的清单,并在intent过滤器中搜索被调用的操作以及完全满足操作需求的那些显示在对话框中。

基本上意图过滤器指定:哪个活动可以响应哪个事件或动作。如果它说action_view,则会打开所有可以响应视图意图过滤器的活动。

让我们看看。

enter image description here

这里app 1说我想要行动 param_c。所以os搜索其他应用程序的清单 param_c 以及所有那些可以响应 param_c <的应用程序/ strong>将在对话框中显示,现在它将向用户提供它想要响应的活动。 *如果只有一个活动可以响应它,那么它将直接打开。不会显示任何对话框。

答案 1 :(得分:1)

  

所以我的问题是哪个应用程序将执行此对话显示   询问用户。

答案:系统,基于所有应用程序的清单文件。你正在谈论的对话是选择对话框。

说明:

调用startActivity()后,system会检查所有已安装的应用,以确定哪些应用可以处理特定类型的intent。如果只有一个应用程序可以处理它,该应用程序会立即打开并获得intent。如果多个活动接受intent,系统将显示一个对话框,以便用户可以选择要使用的应用。

但是,如果多个应用可以响应意图,并且用户可能希望每次都使用其他应用,则最好显示chooser dialogchooser dialog要求用户每次选择要用于操作的应用程序(用户无法为操作选择默认应用程序)。

例如,当您的应用与ACTION_SEND操作执行“共享”时,用户可能希望根据其当前情况使用其他应用进行共享,因此您应始终使用选择对话框。

要显示选择器,请使用createChooser()创建一个Intent并将其传递给startActivity()例如:

// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, title);

这将显示一个对话框,其中包含响应传递给createChooser()方法的意图的应用列表,并使用提供的文本作为对话框标题。

有关更多信息,请参阅Intent-Filters