意向类别的用途是什么?

2022-09-01 15:40:28

有人可以解释一下类别的目的吗?我应该什么时候自己做等等?在我的书中,关于类别的唯一一件事是他们可以对意图进行分组。IntentIntent


答案 1

类别本身是无用的,它们用于描述中“隐式意图”的可能目标。intent-filter

当您知道要启动和使用哪个类/活动或 时,它被称为“显式意图”。startActivity()startActivityForResult()

下面是隐式意图如何工作的类比:

想象一下,您的所有应用程序都坐在一个大房间里,什么都不做。然后,另一个应用程序,比如说Dropbox,需要有人打开PDF文件。Dropbox应用程序转到系统并显示“嘿,有人需要打开此PDF文件...”(这是发送隐式意图)。

系统现在进入房间并大喊“你们中哪一个可以显示PDF文件?可以站立并且系统可以看到它们的应用程序(这些应用程序具有具有匹配目的类别的活动)。

然后,它为您提供了一个对话框,您可以在其中选择其中一个应用程序:Complete action using


如果您想使某些活动/广播接收者/服务在应用程序范围之外可用,则可以使用 Android 清单为其声明“意向过滤器”,以便在系统或应用启动匹配的“隐式意图”时打开它。

例如,您可以对应从启动器打开的活动执行此操作:

<activity android:name=".SomeActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

这听取了由Androids启动器(CATEGORY_LAUNCHER)触发的ACTION_MAIN操作。

您的“意向过滤器”中有两个子元素:

  1. 这。这指定了“意图过滤器”应侦听的操作。action
  2. 一个或多个 s。这指定了应如何调用活动。category

其中一个可以是(例如),它告诉活动在全屏模式下正常启动。例如,-category 将此活动声明为 TabActivity 中的选项卡,因此它只能作为选项卡打开。categoryandroid.intent.category.DEFAULTandroid.intent.category.TAB

另一个示例是添加 -类别,这会将活动声明为“设置-活动”。android.intent.category.PREFERENCE


声明你自己的s是可能的。category

然而,这很少有用。有关更多详细信息,请参阅此问题:自定义类别或操作的用途是什么?


答案 2

推荐