Чтобы создать AppCard, приложение должно создать провайдера в манифесте, который расширяет AppCardContentProvider
. AppCardContentProvider
абстрагирует базовые детали для упрощения создания AppCards.
Манифестная декларация
Чтобы создать AppCard, приложение должно создать поставщик в манифесте для расширения AppCardContentProvider
.
<provider android:name=".SimpleAppCardContentProvider"
android:authorities="com.example.appcard.sample.media"
android:permission="@string/host_permission"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.android.car.appcard.APP_CARD_PROVIDER" />
</intent-filter>
</provider>
Для одного пакета может быть определен только один поставщик со следующими свойствами:
-
android:exported="true"
-
android:enabled="true"
android:permission="@string/host_permission"
ИЛИ,
android:readPermission="@string/host_permission"
И,
android:writePermission="@string/host_permission"
@string/host_permission
существует в библиотеке AppCard и определяет разрешение в зависимости от версии API Android системы.Использование строкового ресурса работает только при сборке с помощью Gradle. При использовании Soong укажите явную строку со значением строкового ресурса в соответствии с соответствующим квалификатором ресурса.
( по умолчанию )
android:grantUriPermissions="false"
( по умолчанию )
android:forceUriPermissions="false"
Чтобы избежать непредвиденных результатов, поставщику необходимо определить только один орган власти в
android:authorities
.Объявите фильтр намерений на основе действий,
com.android.car.appcard.APP_CARD_PROVIDER
Расширить AppCardContentProvider
В этом разделе описываются переопределенные и защищенные окончательные методы.
Переопределение методов
val authority: String
android:authorities
.fun onCreate(): Boolean
super.onCreate()
. Используйте этот метод для настройки функциональности, которая может потенциально вызвать задержку, если настроена при запросе AppCard.val appCardIds: List
fun onAppCardAdded(String, AppCardContext): AppCard
AppCardContext
, которые содержат подсказки о том, как отображается AppCard.Используйте этот метод для настройки любой функциональности, требуемой AppCards, поддерживаемыми в качестве поставщика. После вызова этой функции AppCard, соответствующий данному идентификатору, считается активным.
fun onAppCardRemoved(String)
fun onAppCardContextChanged(String, AppCardContext)
AppCardContext
.Защищенные конечные методы
fun sendAppCardUpdate(AppCard)
fun sendAppCardComponentUpdate(String, Component)
EnforceFastUpdateRate
, то обновление отправляется немедленно.Часто задаваемые вопросы
Где примеры реализации?