“android.intent.category.DEFAULT”的目的是什么?

时间:2011-04-20 08:57:15

标签: android intentfilter

在Intent Filters的Category字段中使用android.intent.category.DEFAULT的目的是什么?

8 个答案:

答案 0 :(得分:99)

类别用于隐式Intent。因此,如果您的Activity可能在没有为其分配特定类别时由隐式Intent启动,则其Intent过滤器应包含此类别。(即使您在Intent过滤器中有其他类别)。如果您确定必须使用任何其他类别调用您的活动,请不要使用默认值。

将“类别”设置为“默认”并不意味着在应用启动时默认使用此“活动”。活动只是告诉系统“我可以启动,即使启动程序Intent的类别设置为 Nothing

答案 1 :(得分:23)

此类别主要用于隐式意图。如果您的活动希望通过隐式意图启动,则应在其过滤器中包含此catetory。

我认为“默认”一词应理解为“默认 候选人 ”。如果对一条数据的操作解析为多个活动,则Android会将所有候选项呈现给用户,并且用户可以选择其首选默认值。

参考:

http://developer.android.com/guide/components/intents-filters.html

从该页面中摘录:

  

Android会将通过tostartActivity()传递的所有隐式意图视为至少包含一个类别:“android.intent.category.DEFAULT”(CATEGORY_DEFAULT常量)。因此,愿意接收隐式意图的活动必须在其意图过滤器中包含“android.intent.category.DEFAULT”。 (带有“android.intent.action.MAIN”和“android.intent.category.LAUNCHER”设置的过滤器是例外。它们标记开始新任务的活动,并在启动器屏幕上显示。它们可以包含“android.intent .category.DEFAULT“在类别列表中,但不需要。”

答案 2 :(得分:1)

实际上,确保在应用运行时可以调出您的其他活动。 LAUNCHER将使活动成为第一个开始的活动。要使用意图来进行其他活动,必须通过放置DEFAULT将它们列为“实际”活动。这是我所知道的,所以如果它错了就不要引用我。

答案 3 :(得分:1)

活动需要支持CATEGORY_DEFAULT,以便Context.startActivity()可以找到它们。

为了接收隐式意图,您必须在intent过滤器中包含CATEGORY_DEFAULT类别。方法startActivity()和startActivityForResult()将所有意图视为已声明CATEGORY_DEFAULT类别。如果我们不在我们的intent过滤器中声明它,则不会将隐式意图解析为我们的活动。

答案 4 :(得分:0)

它用于将某些操作声明为默认操作(顾名思义)。 让我们考虑一下我们有一个记事本应用程序(指的是android记事本示例)。应用程序的第一页包含所有记事本文件的列表。当选择一个记事本文件时,可以执行编辑注释,删除注释等操作之一。但我想将编辑作为我的默认操作,这意味着当我按下键盘的中心按钮时,编辑窗口应该打开。

                                                                                     

答案 5 :(得分:0)

https://developer.android.com/guide/components/intents-filters

  

要接收隐式意图,必须在意图过滤器中包括CATEGORY_DEFAULT类别。方法startActivity()和startActivityForResult()将所有意图都视为声明了CATEGORY_DEFAULT类别。如果您没有在意图过滤器中声明此类别,则任何隐式意图都不会解析您的活动。

答案 6 :(得分:0)

在活动接受隐式意图之前,意图必须通过类别测试:意图中的每个类别必须与活动的意图过滤器中的完全相同的类别匹配。

类别DEFAULT自动应用于所有隐式意图(默认情况下),因此,由于上述原因,每个想要接收所有隐式意图的Activity都必须在其Intent过滤器中包含该类别。 / p>

Source

答案 7 :(得分:-1)

类别:

android.intent.category.DEFAULT

匹配任何隐式的Intent。必须包含此类别,您的活动才能接收任何隐式的Intent。

https://codelabs.developers.google.com/codelabs/android-training-activity-with-implicit-intent/index.html?index=..%2F..%2Fandroid-training#6