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

在意图filter的类别字段中提供“android.intent.category.DEFAULT”的目的是什么? 这是什么意思?

类别用于隐式意图。 所以,如果你的Activity可能由一个隐式的Intent启动,当没有特定的类别被分配给它时,它的Intentfilter应该包含这个类别(即使你在Intentfilter中有其他的类别)。 如果您确定必须使用其他类别调用您的活动,请不要使用“默认”。

将类别设置为默认值并不意味着您的应用程序启动时将默认使用此“活动”。 该活动只是对系统说:“ 噢,我可以开始,即使首发意图的类别设置为什么都没有

这个类别主要用于隐式意图。 如果你的活动希望由一个隐含的意图开始,那么它应该包含这个filter。

我认为“违约”一词应该被理解为“默认候选人 ”。 如果对一段数据的操作parsing为多个活动,则Android将向用户呈现所有候选者,并且用户可以select他的首选默认值。

参考:

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

从该页面提取:

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

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

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

活动将需要支持CATEGORY_DEFAULT,以便可以通过Context.startActivity()find它们。

为了接收隐式意图,您必须在意向filter中包含CATEGORY_DEFAULT类别。 方法startActivity()和startActivityForResult()将所有的intent视为它们声明了CATEGORY_DEFAULT类别。 如果我们没有在我们的意图filter中声明它,那么隐含的意图就不会解决我们的活动。