android.intent.category.DEFAULT
在意图过滤器的“类别”字段中使用的目的是什么?
android.intent.category.DEFAULT
在意图过滤器的“类别”字段中使用的目的是什么?
Answers:
类别用于隐式Intent。因此,如果在没有其他特定类别分配给活动时可以通过隐式Intent启动您的Activity,则活动的Intent过滤器应包括该类别。(即使“意图”过滤器中还有其他类别)。如果您确定必须用任何其他类别调用您的活动,请不要使用默认值。
将类别设置为默认并不意味着在您的应用启动时默认使用此活动。该活动仅对系统说:“ 哦,即使启动者意图的类别设置为“ 一无所有! ” ,我也可以启动!
该类别主要用于隐式意图。如果您的活动希望以隐式意图开始,则应将此类别包含在其过滤器中。
我认为应将“默认”一词理解为“默认候选 ”。如果对一条数据的操作分解为多个活动,则Android将向用户显示所有候选者,并且用户可以选择其首选默认值。
参考:
http://developer.android.com/guide/components/intents-filters.html
从该页面中提取:
Android将传递给startActivity()的所有隐式意图视为包含至少一个类别:“ android.intent.category.DEFAULT”(CATEGORY_DEFAULT常量)。因此,愿意接收隐式意图的活动必须在其意图过滤器中包含“ android.intent.category.DEFAULT”。(具有“ android.intent.action.MAIN”和“ android.intent.category.LAUNCHER”设置的过滤器是例外。它们标记开始新任务并在启动器屏幕上显示的活动。它们可以包括“ android.intent .category.DEFAULT”,但不需要。)
实际上是确保在应用运行时可以调出其他活动。启动器将拥有它的活动作为第一个开始的活动。要使用意图进行其他活动,必须通过放置DEFAULT将其列为“实际”活动。据我所知,如果有误,请不要引用我。
活动将需要支持CATEGORY_DEFAULT,以便可以通过Context.startActivity()找到它们。
为了接收隐式意图,您必须在意图过滤器中包括CATEGORY_DEFAULT类别。方法startActivity()和startActivityForResult()将所有意图视为已声明CATEGORY_DEFAULT类别。如果我们不在意图过滤器中声明它,则任何隐式意图都不会解析为我们的活动。
它用于将某些操作声明为默认操作(顾名思义)。让我们考虑一下我们有一个记事本应用程序(指的是Android记事本示例)。应用程序的第一页包含所有记事本文件的列表。选择一个记事本文件后,可以执行诸如编辑记事,删除记事等操作之一。但是我想将编辑作为默认操作,这意味着当我按下键盘的中心按钮时,编辑窗口应该打开。
https://developer.android.com/guide/components/intents-filters
要接收隐式意图,必须在意图过滤器中包括CATEGORY_DEFAULT类别。方法startActivity()和startActivityForResult()将所有意图视为已声明CATEGORY_DEFAULT类别。如果您没有在意图过滤器中声明此类别,则任何隐式意图都不会解析为您的活动。
类别:
android.intent.category.DEFAULT
匹配任何隐式的Intent。必须包含此类别,您的活动才能接收任何隐式的Intent。