Создать карту приложения

Чтобы создать 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
Используйте этот метод для возврата списка поддерживаемых идентификаторов AppCard. Мы рекомендуем сделать каждый идентификатор подробным, так как эта строка используется для регистрации ошибок.

fun onAppCardAdded(String, AppCardContext): AppCard
Этот метод вызывается, когда AppCard отображается в первый раз, и предоставляет идентификатор, связанный с AppCard, и AppCardContext , которые содержат подсказки о том, как отображается AppCard.

Используйте этот метод для настройки любой функциональности, требуемой AppCards, поддерживаемыми в качестве поставщика. После вызова этой функции AppCard, соответствующий данному идентификатору, считается активным.

fun onAppCardRemoved(String)
Этот метод вызывается, когда пользователю не показываются оставшиеся экземпляры AppCard, и обрабатывает всю очистку. Когда вызывается эта функция, AppCard, соответствующий данному идентификатору, считается неактивным.

fun onAppCardContextChanged(String, AppCardContext)
Этот метод вызывается, когда система хочет обновить способ отображения AppCard и отправляет обновленный AppCardContext .

Защищенные конечные методы

fun sendAppCardUpdate(AppCard)
Вызовите этот метод, чтобы поставить в очередь обновление для активной AppCard.

fun sendAppCardComponentUpdate(String, Component)
Вызовите этот метод, чтобы поставить в очередь обновление для компонента в активной AppCard. Если данный компонент помечен тегом EnforceFastUpdateRate , то обновление отправляется немедленно.

Часто задаваемые вопросы

Где примеры реализации?