将深层链接集成到媒体应用

本文档旨在介绍第三方 (3P) 应用开发者如何向 AAOS 媒体应用添加深层链接。借助媒体深层链接,您可以通过深层链接打开 AAOS 媒体应用,就像在移动设备上打开一样。

支持的版本

如需获取最新的受支持版本,请参阅最新的构建制品

  • CarMediaApp.apk
  • TestMediaApp.apk

运作方式

在 AAOS 上打开深层链接时,系统会打开处理特定架构的媒体应用。然后,媒体应用会对该网址进行解码,使用该链接中的信息创建 Media intent,然后使用该 intent 打开媒体屏幕。

支持新 intent 和新 extra 的实现:

  • 为可由 Media 向第三方开发者处理的 intent 提供更新后的格式,以便他们可以通过 intent 向 Media 发送必要信息。

  • 处理来自包含特定媒体内容或搜索查询的第三方应用的 intent,然后在 Media 中打开包含所请求信息的页面。

第三方开发者负责更新其应用,以便应用可以通过网页 URI intent 调用,并通过 intent 向 Media 发送必要信息。

第三方应用的要求

TestMediaApp 应用中的 TmaTrampolineActivity 为例。

第 1 步

开发者必须在 TestMediaApp 中添加类似于 TmaTrampolineActivity 的 activity。如需深层链接,此 activity 需要在清单中添加 intent 过滤器。此 intent 过滤器应包含要处理的所有网址,如为传入链接添加 intent 过滤器中所述。

我们建议 intent 过滤器包含手机版应用使用的架构和主机,以确保深层链接可在各个平台上正常运行。

<activity android:name=".automotive.TmaTrampolineActivity"
                  android:exported="true">
            <intent-filter android:label="TmaTrampolineActivity_label">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="app"
                      android:host="com.android.car.media.testmediaapp"/>
            </intent-filter>
        </activity>

第 2 步

在此 activity 中,Media 应用会从链接中检索信息,并为 Media 创建 intent。

Media 支持两种函数。第一个函数用于打开包含特定媒体内容的媒体内容,第二个函数用于显示搜索查询的结果。媒体内容 ID 或搜索查询字符串必须包含在 intent extra 中。

intent 信息

如需使用此功能,开发者必须安装最新版本的 Media 以支持 intent 操作 ACTION_MEDIA_TEMPLATE_V2。该 intent 操作以及以下 intent extra 包含在 MediaIntentExtras.java 类中。这些 extra 可以添加到 intent 中。

extra 名称 说明
EXTRA_KEY_MEDIA_COMPONENT componentName 的字符串 此键用作 ACTION_MEDIA_TEMPLATE_V2 的字符串 extra 字段,用于指定用户要通过哪个 MediaBrowserService 启动媒体。 如果未指定,系统会打开活跃的媒体来源。
EXTRA_KEY_MEDIA_ID 媒体 ID 此键用作 ACTION_MEDIA_TEMPLATE_V2 的字符串 extra 字段,用于指定应在浏览视图中显示的媒体文件。必须与 MediaBrowserServiceCompat API 中使用的 ID 一致。
EXTRA_KEY_SEARCH_QUERY 搜索查询 此键用作 ACTION_MEDIA_TEMPLATE_V2 的字符串 extra 字段,用于指定要发送到当前 MediaBrowserService 或使用 EXTRA_KEY_MEDIA_COMPONENT 指定的 MediaBrowserService 的搜索查询
EXTRA_KEY_SEARCH_ACTION

整数:

  • 0:EXTRA_VALUE_NO_SEARCH_ACTION
  • 1:EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
此键用作 ACTION_MEDIA_TEMPLATE_V2 的整数 extra 字段,用于在加载搜索查询后指定 Media 要执行的操作。

该值为 EXTRA_VALUE_NO_SEARCH_ACTION 或 EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH 之一。此 extra 应仅与 EXTRA_KEY_SEARCH_QUERY 搭配使用。

如果未指定此 extra,则在搜索结果加载后不会执行进一步的操作。

特殊情况

如果将多个 extra 一起添加到 intent 中,例如此 intent 中同时包含 EXTRA_KEY_MEDIA_IDEXTRA_KEY_SEARCH_QUERY,则当前实现会先处理媒体 ID,并且只有在媒体 ID 为空时,Media 才会运行搜索查询。

测试

第三方媒体应用集成完成后,使用 adb 命令发送深层链接。Media 会打开并显示所需信息。例如,针对 TestMediaApp 的以下命令:

adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"