Intent Manager

注意:要显示特定设备上存在的功能,请从下面的 SmartDocs 栏中选择一个或多个过滤器。

StageNow - 2.10

概述

Intent CSP 允许应用程序使用 Android Intent 与其他应用程序通信,它为在应用程序之间执行后期运行时绑定提供了一种工具。这种通用机制在 Android Intent 类中包括了一组丰富的方法,可用来自定义 Intent,以满足将 Intent 发送到的应用程序的要求。Intent 的最常见用法是启动应用程序活动。

可以使用 Java 代码创建高度复杂的 Intent,但是让 Intent 尝试描述每个可能的 Intent 是不切实际的。应该是支持最常见的使用案例(启动应用程序活动)以及适度的数据项附加能力,以涵盖其他常见使用案例。

在 Android 中,Intent 是对要执行的操作的抽象描述。必须创建 Intent 并使用以下 API 之一发送:

  • StartActivity 在应用程序内启动活动。这通常用于执行用户界面的特定功能,如选择联系人姓名,在这些情况下可能返回一个结果(联系人)。
  • BroadcastIntent 会将发生的某些事件通知一个或多个监听器应用程序,如正在连接外部电源。
  • StartService 启动一项服务,即使在启动它的组件被毁坏后,也能够继续在后台运行。

Intent 可以定义为一个数据结构,它指定要执行的操作、执行该操作所需的数据。Intent 可能包括一个指定要执行操作的“操作”,要操作的数据,以及各种类型的额外数据项,以限定要执行的操作。可通过指明如何发送 Intent、指定 Android 操作名称、主要数据的 URI 和 MIME 类型以及通过附加额外数据来定义 Intent。

注意:Intent 功能未设计用于创建和发送高度复杂的 Intent,尤其是那些需要大量额外数据项或者具有复杂数据类型的 Intent。如果需要复杂的 Intent,Zebra 建议创建并将它们打包成一个 Java 应用程序,然后使用更简单的 Intent 启动该应用程序。

Intent 类型

显式 Intent

显式 Intent 被定向到某个特定应用程序。它会请求该应用程序,也只能由该应用程序执行所请求的操作。显式 Intent 可使用任何可用的方法发送,但是最常使用 startActivitystartService 方法将它定向到特定应用程序中的活动或服务。

如果某个 Intent 指定包名称和类名称,则将它视为显式 Intent,因为它将只发送到特定包名称和类名称标识的特定应用程序。如果未安装具有指定包名称和类名称的应用程序,显式 Intent 会失败。显式 Intent 可以但不是必须指定附加信息,来告诉接收方应用程序如何执行请求的操作。

隐式 Intent

隐式 Intent 是一个执行某个操作的通用请求,它未指定哪些应用程序应该执行该操作。隐式 Intent 可使用任一可用的方法进行发送,但最常使用 broadcastIntent 发送以请求未指定数量的注册接收方执行某项操作。

如果某个 Intent 未指定包名称和类名称,则将它视为隐式 Intent,因为它未指定要将它发送到的特定应用程序。如果没有合适的注册接收方,隐式 Intent 可能会失败。隐式 Intent 必须指定至少一些信息,以告知接收方应用程序有关要执行的操作以及如何执行操作。

**重要说明:从 Andriod 7.0 Nougat 开始,隐式 Intent 不受到 Intent CSP 的支持。仅在运行 Android N 和更高版本的设备上使用显式 Intent

主要功能

  • 指定如何将发送 Intent:
    • StartActivity
    • BroadcastIntent
    • StartService
  • 注册设备所有者
  • 指定要执行的操作的“Android 操作”名称。
  • 指定主要数据的 URI 和 MIME 类型
  • 附加最多 5 个以下数据类型的附加数据项:
    • 标准整数
    • 字符
    • 字符序列
    • 浮点
    • 长整型
    • 布尔
    • 双精度浮点
    • 字符串
    • 单字节整数

操作

用于通过该 Intent 在其他应用程序中调用的操作。

参数名称:操作

选项 名称 说明需要
1 StartActivity 使用 startActivity 发送 Intent,以在应用程序内调用活动。

MX:4.1+

Android API:1+

2 StartService 使用 startService 发送 Intent 以启动后服务在应用程序中的操作。

MX:4.1+

Android API:1+

3 广播 使用 broadcastIntent 发送 Intent,以在一个或多个应用程序中调用注册的广播接收器(监听器)。

MX:4.1+

Android API:1+

4 EnrollDeviceOwner 发送 Intent 以注册设备所有者(使用“软件包”和“类”参数指定),进行配置和设备管理。对于绕过 Android 设置向导和 GMS 欢迎屏幕非常有用,还适用于非 GMS 设备。

MX:6.5+

Android API:24+

操作名称

用于指定 Intent 的接收方要执行的操作的名称。只要有可能,应在已知被预期接收方支持的操作名称中选择指定的操作名称。虽然预定义了许多 Android 操作名称,但是可以添加新的操作名称,这使得可能的操作名称集实际上是无限制的。任何给定的接收方可能仅支持一小部分的操作名称。

注意:由于可能的操作名称集是可扩展的,因此 Intent 对于可指定的操作名称没有施加具体的限制。但是,Android 会拒绝没适合的接收方的 Intent。此外,某些接收方可能需要某个应用程序拥有的权限,然后才能使用某些操作名称发送 Intent。如果试图发送被 Android 系统或特定接收方拒绝的 Intent,将会在结果 XML 中返回错误。

参数值输入规则

  • 1 到 255 个字符的字符串

在以下条件下显示:操作不是“注册设备所有者”

参数名称:ActionName

需要:

  • MX:4.1+
  • Android API:1+

类型

用于指定 Intent 将发送到的应用程序的软件包类型。通过指定此参数可将 Intent 分类为显式,如果没有安装属于指定软件包类型的应用程序,则会导致失败。

参数值输入规则

  • 0 到 255 个字符的字符串,其中包含目标应用程序的软件包类型

在以下条件下显示:操作不是“注册设备所有者”

参数名称:类型

需要:

  • MX:4.1+
  • Android API:1+

软件包

用于指定 Intent 将发送到的应用程序的包名称。通过指定此参数可将Intent 分类为显式,如果没有安装具有指定包名称的应用程序,则会导致失败。始终应该结合使用“包名称”和“类名称”参数来指定应用程序中的类。

参数值输入规则

  • 1 到 255 个字符的字符串,其中包含目标应用程序的包名称

在以下条件下显示:操作不是“广播”

参数名称:类型

需要:

  • MX:4.1+
  • Android API:1+

用于指定 Intent 将发送到的、通过指定包名称标识的应用程序中的类名称。通过指定此参数可将 Intent 分类为显式,如果指定应用程序中没有这样的类,则会导致失败。始终应该结合使用“包名称”和“类名称”参数来指定应用程序中的类。

参数值输入规则

  • 1 到 255 个字符的字符串,其中包含目标应用程序的类名称

在以下条件下显示:操作不是“广播”

参数名称:类型

需要:

  • MX:4.1+
  • Android API:1+

URI

用于指定统一资源标识符 (URI) 以标识 Intent 的主要数据.URI 参数不是必需的,除非有一些主要数据要通过 Intent 请求的操作进行处理,通常是远程服务器上的资源。在大多数情况下,还应该指定 MIME 类型以定义 URI 所参考的数据的类型。

参数值输入规则

  • 0 到 255 个字符的字符串,其中包含 URI

在以下条件下显示:操作为“启动活动”或“启动服务”

参数名称:Uri

需要:

  • MX:4.1+
  • Android API:1+

文件

用于指定标识 Intent 主要数据的路径和文件名。“文件”参数不是必需的,除非有一些主要数据要通过 Intent 请求的操作进行处理。在某些情况下,还应该指定 MIME 类型以定义文件中数据的类型。

参数值输入规则

  • 1 到 255 个字符的字符串,其中包含路径和文件名

在以下条件下显示:操作为“启动活动”或“启动服务”

参数名称:文件

需要:

  • MX:4.1+
  • Android API:1+

MIME 类型

用于指定 Intent 主要数据的内容 MIME 类型。此参数用于指定将用来执行所请求操作的数据对象的类型。通常为文件或网络资源指定 MIME 类型,以帮助接收方应用程序处理数据。要执行操作的实际数据必须使用“URI”或“文件”参数指定。

参数值输入规则

  • 0 到 255 个字符的字符串,其中包含 MIME 类型

参数名称:类型

需要:

  • MX:4.1+
  • Android API:1+

额外项类型

用于指定要作为额外数据项附加到 Intent 的数据的数据类型。Intent 允许使用设置的提示、参数以及下面所述的数据类型附加和发送最多五个额外数据项。指定多个额外项类型为 ExtraType、Extra1Type、Extra2Type、Extra3Type 和 Extra4Type

参数名称:ExtraType

选项 名称 说明需要
none 此值(或 XML 中缺少此参数)导致不会更改要驸加到 Intent 的对应额外数据选项;任何以前选择的设置都将保留。

MX:4.1+

Android API:1+

int 标准整数 导致使用“标准整数”数据类型将额外数据项附加到 Intent。因此,提供的值必须为字符串,它表示 -2^31 和 2^31 -1 之间的整数值。

MX:4.1+

Android API:1+

char 字符 导致使用“字符”数据类型将额外数据项附加到 Intent。因此,提供的值必须是包含一个字符的字符串。

MX:4.1+

Android API:1+

charsequence 字符序列 导致使用“字符序列”数据类型将额外数据项附加到 Intent。因此,提供的值必须是包含一个字符序列的字符串。此数据类型可用于提供可与“字符串”数据类型比较的值,应该在接收方明确要求“字符串序列”而不是“字符串”时使用。

MX:4.1+

Android API:1+

float 浮点 导致使用“单精度浮点”数据类型将额外数据项附加到 Intent。因此,提供的值必须为表示有效单精度 32 位 IEEE 754 浮点数的字符串。

MX:4.1+

Android API:1+

long 长整型 导致使用“长整型”数据类型将额外数据项附加到 Intent。因此,提供的值必须为字符串,它表示 -2^63 和 2^63-1 之间的有效长整数。

MX:4.1+

Android API:1+

boolean 布尔 导致使用“布尔”数据类型将对应的额外数据项附加到 Intent。提供的值因此必须是表示有效布尔值(“true”或“false”)的字符串。

MX:4.1+

Android API:1+

char 字符 导致使用“字符”数据类型将额外数据项附加到 Intent。因此,提供的值必须是包含一个字符的字符串。

MX:4.1+

Android API:1+

short 导致使用“短整型”数据类型将对应的额外数据附加到 Intent。因此,提供的值必须为字符串,表示 -2^15 和 2^15-1 之间的有效短整数。

MX:4.1+

Android API:1+

double 双精度浮点 导致使用“双精度浮点”数据类型将额外数据项附加到 Intent。因此,提供的值必须为表示有效双精度 64 位 IEEE 754 浮点数的字符串。

MX:+

string 字符串 导致使用“字符序列”数据类型将额外数据项附加到 Intent。因此,提供的值必须是包含一个字符序列的字符串。此数据类型可用于提供可与“字符序列”数据类型比较的值,应该在接收方明确要求“字符串”而不是“字符序列”时使用。

MX:4.1+

Android API:1+

byte 单字节整数 导致使用“单字节整型”数据类型将对应的额外数据附加到 Intent。因此,提供的值必须为字符串,表示 -2^7 和 2^7-1 之间的有效单字节整数值。

MX:4.1+

Android API:1+

额外项名称

用于指定要为指定的数据类型不是“无”的任何额外数据项附加的额外数据项名称。指定多个额外项名称为 ExtraName、Extra1Name、Extra2Name、Extra3Name 和 Extra4Name

注意:Intent 框架不会对可以为额外数据项指定的名称施加具体限制。但是,Zebra 建议按照 Intent 接收方的预期验证准确的“附加名称”,以实现所需的结果。

参数值输入规则

  • 1 到 255 个字符的字符串

在以下条件下显示:额外项类型不是“none”

参数名称:ExtraName

需要:

  • MX:4.1+
  • Android API:1+

额外项值

用于指定要附加到指定的数据类型不是“none”且具有对应名称的 Intent 的额外数据项的值。指定多个额外项值为 ExtraValue、Extra1Value、Extra2Value、Extra3Value 和 Extra4Value

参数值输入规则

  • 1 到 255 个字符的字符串

在以下条件下显示:额外项类型不是“none”

参数名称:ExtraName

需要:

  • MX:4.1+
  • Android API:1+

示例

启动应用程序的主活动

<wap-provisioningdoc><characteristic type="Intent" version="4.3" ><parm name="Action" value="StartActivity"/><parm name="ActionName" value="android.intent.action.MAIN"/><parm name="Package" value="com.sample.myapp"/><parm name="Class" value="com.sample.myapp.MainActivity"/></characteristic></wap-provisioningdoc>

注册设备所有者

<wap-provisioningdoc><characteristic type="Intent" version="7.0" ><parm name="Action" value="EnrollDeviceOwner"/><parm name="Package" value="com.symbol.osx.testdpc"/><parm name="Class" value="com.symbol.osx.testdpc.AdminClass"/></characteristic></wap-provisioningdoc>