本文旨在介绍第三方 (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_V2
。MediaIntentExtras.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 | 整数
|
用作 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_ID
和 EXTRA_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"