Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 意图类别的目的是什么?_Java_Android_Android Intent - Fatal编程技术网

Java 意图类别的目的是什么?

Java 意图类别的目的是什么?,java,android,android-intent,Java,Android,Android Intent,有人能给我解释一下Intent类别的目的吗?我应该什么时候做我自己的等等?在我的书中,关于Intent类别所写的唯一一件事就是它们可以对意图进行分组?类别本身是无用的,它们被用来描述Intent过滤器中的一个可能目标 当您知道要启动并使用startActivity()或startActivityForResult()的类/活动时,它被称为“显式意图” 这里有一个关于隐含意图如何工作的类比: 想象一下,所有的应用程序都坐在一个大房间里,什么也不做。 然后,另一个应用程序,比如Dropbox,需要有

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

类别本身是无用的,它们被用来描述
Intent过滤器中的一个可能目标

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

这里有一个关于隐含意图如何工作的类比:

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

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

然后,它会为您提供一个对话框,您可以在其中选择以下选项之一: 应用程序:


如果你想让你的一些活动/广播接收器/服务在你的应用程序范围之外可用,你可以使用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启动器()触发的操作

“意图过滤器”中有两个子元素:

  • 操作
    。这指定了“意图过滤器”应该执行的操作 听我说
  • 一个或多个
    类别
    s。这将指定活动应如何进行 打电话来
  • 其中一个
    类别可以是(例如)
    android.intent.category.DEFAULT
    ,它告诉活动以全屏模式正常启动。例如,
    android.intent.category.TAB
    -category将此活动声明为中的选项卡,因此它只能作为选项卡打开

    另一个例子是添加
    android.intent.category.PREFERENCE
    -category,它将活动声明为您的设置活动


    声明您自己的
    类别
    s既不可能也不必要


    此外,您还需要了解这些事件是由系统/另一个应用程序触发的,您只能指定触发事件时是否以及如何作出反应。

    您忘了提到CATEGORY_DEFAULT,它是根据uri数据方案/主机模式匹配意图所需的。offTopic:我们可以使用categories应用程序名称吗根据android中的意图分类