Целью этого документа является описание того, как разработчики сторонних приложений (3P) могут добавлять глубокие ссылки в медиаприложения AAOS. Глубокие ссылки на медиа позволяют открывать медиаприложения AAOS через глубокие ссылки так же, как на мобильном устройстве.
Поддерживаемые версии
Чтобы получить последнюю поддерживаемую версию, ознакомьтесь с последними артефактами сборки .
-
CarMediaApp.apk
-
TestMediaApp.apk
Как это работает
При открытии глубокой ссылки в AAOS открывается медиа-приложение, которое обрабатывает соответствующую схему. Затем медиа-приложение декодирует URL, создаёт медиа-намерение с информацией из этой ссылки и затем использует это намерение для открытия медиа-экрана.
Реализация поддержки новых намерений и новых дополнений:
Предоставляет обновленный формат намерений, который может быть обработан медиа-разработчиками для 3P-разработчиков, чтобы они могли отправлять необходимую информацию через намерение в медиа-ресурсы.
Обрабатывает намерения сторонних приложений, содержащих определенный элемент мультимедиа или поисковый запрос, а затем открывает страницу с запрошенной информацией в медиа.
Разработчики 3P несут ответственность за обновление своих приложений таким образом, чтобы их можно было вызывать с помощью намерений веб-URI и отправлять необходимую информацию в Media через намерение.
Требование к 3P-приложениям
В качестве примера приведен TmaTrampolineActivity
в приложении TestMediaApp
.
Шаг 1
Разработчикам необходимо создать активность, аналогичную TmaTrampolineActivity
в TestMediaApp
. Для создания глубокой ссылки в манифесте этой активности необходимо добавить фильтр намерений. Этот фильтр должен включать все URL-адреса, подлежащие обработке, как описано в разделе Добавление фильтров намерений для входящих ссылок .
Мы предлагаем включить в фильтр намерений схемы и хосты, которые использует версия приложения для телефона, чтобы гарантировать работу глубинных ссылок на всех платформах.
<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
В этом действии приложение Media извлекает информацию из ссылки и создает намерение для Media.
Медиа поддерживает две функции. Первая — открытие медиафайла с определённым медиафайлом, а вторая — отображение результатов поискового запроса. Идентификатор медиафайла или строка поискового запроса должны быть включены в дополнительный параметр намерения.
Информация о намерениях
Чтобы использовать эту функцию, разработчикам необходимо установить последнюю версию Media для поддержки действия Intent — ACTION_MEDIA_TEMPLATE_V2
. Действие Intent и следующие дополнительные элементы Intent включены в класс MediaIntentExtras.java
. Эти дополнительные элементы можно добавить к Intent.
Дополнительное имя | Ценить | Описание |
---|---|---|
EXTRA_KEY_MEDIA_COMPONENT | Строка для componentName | Ключ используется как строковое дополнительное поле с ACTION_MEDIA_TEMPLATE_V2 для указания службы MediaBrowserService, в которой пользователь хочет запустить медиа. Если ключ не указан, открывается активный источник медиа. |
EXTRA_KEY_MEDIA_ID | Идентификатор носителя | Ключ, используемый как строковое дополнительное поле с ACTION_MEDIA_TEMPLATE_V2, указывает медиа-элемент, который должен отображаться в представлении « Обзор» . Должны соответствовать идентификаторам, используемым в API MediaBrowserServiceCompat. |
EXTRA_KEY_SEARCH_QUERY | Поисковый запрос | Ключ, используемый как строковое дополнительное поле с ACTION_MEDIA_TEMPLATE_V2 для указания поискового запроса, который следует отправить либо текущему MediaBrowserService, либо указанному с EXTRA_KEY_MEDIA_COMPONENT |
EXTRA_KEY_SEARCH_ACTION | Целое число:
| Ключ используется как дополнительное поле int с ACTION_MEDIA_TEMPLATE_V2 для указания действия, которое Media должен выполнить после загрузки поискового запроса. Значение может быть EXTRA_VALUE_NO_SEARCH_ACTION или EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH. Этот дополнительный параметр следует использовать только с EXTRA_KEY_SEARCH_QUERY. Если этот параметр не указан, то никаких дальнейших действий после загрузки результатов поиска не производится. |
Особые случаи
Если к намерению одновременно добавлены несколько дополнительных элементов, например, в это намерение включены как EXTRA_KEY_MEDIA_ID
, так и EXTRA_KEY_SEARCH_QUERY
, текущая реализация сначала обрабатывает идентификатор носителя, и только когда идентификатор носителя пуст, носитель выполняет поисковый запрос.
Тест
После завершения интеграции стороннего медиаприложения отправьте глубокую ссылку с помощью команды adb
. Медиаприложение откроется с необходимой информацией. Например, эта команда для TestMediaApp
:
adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"