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

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

支持的版本

要获取最新支持的版本,请参阅最新的构建工件

  • CarMediaApp.apk
  • TestMediaApp.apk

工作原理

当在 AAOS 上打开深度链接时,它会打开处理特定 scheme 的媒体应用。然后,媒体应用会解码网址,使用该链接中的信息创建 Media intent,然后使用该 intent 打开媒体屏幕。

支持新 intent 和新 extra 的实现

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

  • 处理来自 3P 应用的 intent,这些 intent 包含特定的媒体项或搜索查询,然后在 Media 中打开包含请求信息的页面。

3P 开发者负责更新他们的应用,以便可以通过 Web URI intent 调用该应用,并通过 intent 将必要的信息发送到 Media。

3P 应用的要求

TestMediaApp 应用中的 TmaTrampolineActivity 用作示例。

步骤 1

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

我们建议 intent 过滤器包含手机版本应用使用的 scheme 和 host,以确保深度链接在各个平台之间都能正常工作。

<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 的 intent。

Media 支持两个功能。第一个功能是使用特定的媒体项打开媒体项,第二个功能是显示搜索查询的结果。媒体项 ID 或搜索查询字符串必须包含在 intent extra 中。

Intent 信息

要使用此功能,开发者必须安装最新版本的 Media,以支持 Intent 操作 ACTION_MEDIA_TEMPLATE_V2MediaIntentExtras.java 类中包含 Intent 操作和以下 intent extra。这些 extra 可以添加到 intent 中。

Extra 名称 说明
EXTRA_KEY_MEDIA_COMPONENT componentName 的字符串 用作字符串 extra 字段的键,与 ACTION_MEDIA_TEMPLATE_V2 一起使用,以指定用户要在其上启动媒体的 MediaBrowserService。如果未指定,则会打开活动的媒体源。
EXTRA_KEY_MEDIA_ID 媒体 ID 用作字符串 extra 字段的键,与 ACTION_MEDIA_TEMPLATE_V2 一起使用,以指定应在 Browse 视图中显示的媒体项。必须与 MediaBrowserServiceCompat API 中使用的 ID 匹配。
EXTRA_KEY_SEARCH_QUERY 搜索查询 用作字符串 extra 字段的键,与 ACTION_MEDIA_TEMPLATE_V2 一起使用,以指定要发送到当前 MediaBrowserService 或使用 EXTRA_KEY_MEDIA_COMPONENT 指定的 MediaBrowserService 的搜索查询
EXTRA_KEY_SEARCH_ACTION

整数

  • 0:EXTRA_VALUE_NO_SEARCH_ACTION
  • 1:EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
用作 int extra 字段的键,与 ACTION_MEDIA_TEMPLATE_V2 一起使用,以指定 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 才会运行搜索查询。

测试

3P 媒体应用集成完成后,使用 adb 命令发送深度链接。Media 会打开并显示所需的信息。例如,以下是 TestMediaApp 的命令

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