gpt4 book ai didi

Android:了解 Intent 过滤器

转载 作者:IT老高 更新时间:2023-10-28 21:42:20 26 4
gpt4 key购买 nike

我想创建一个 Intent-Filter,以便某些链接将触发我的应用程序的启动(请参阅此 stackoverflow-thread 例如:How to register some URL namespace (myapp://app.start/) for accessing your program by calling a URL in browser in Android OS?)

在尝试时,我发现我不太了解 Intent 和 Intent-Filters(在 Manifest.xml 中定义)实际上是如何工作的。以下有什么区别:

<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN" />

或以下:

<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MAIN" />

类别和 Action Intent-Filters之间实际上有什么区别。我读了这个页面http://developer.android.com/reference/android/content/Intent.html但我仍然缺少基本的了解。

最佳答案

不要从应用的角度看它,而是翻转它并从 Intent 端看它。

创建 Intent 时,创建者不知道系统上有哪些应用程序来处理该 Intent。但是创建者确实知道它想要做什么(例如,一个应用程序可能希望让用户从设备上的某个位置选择一个联系人),并且需要与系统上的其他应用程序联系以询问他们想要什么。

为此,Intent 附加了几条信息。其中包括 Action 和类别。

Action 以一般方式定义 Intent 想要执行的 Action ,例如查看联系人、从图库中选择图像等。

类别是一种附加信息,它为 Intent 提供了另一种区分自身的方式。例如,当点击浏览器中的链接时,创建的 Intent 会附加 BROWSABLE 类别。

因此,当操作系统解析 Intent 时,它会查找已注册的具有包含所有信息 fragment 的 Intent 过滤器的 Activity 或广播接收器。如果 Intent 指定了 PICK Action ,那么没有带有 PICK Action 的 Intent 过滤器的 Activity 将从处理该 Intent 的候选列表中丢弃。

通过这种方式,与 Intent 关联的操作、类别、类型和(可能)方案的组合集用于确定可以处理 Intent 的 Activity 集。当您在 list 中设置 Intent 过滤器时,您是在告诉操作系统您可以处理哪类 Intent 。

关于Android:了解 Intent 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com