Criar um card de app

Para criar um AppCard, um app precisa criar um provedor no manifesto que estenda AppCardContentProvider. O AppCardContentProvider abstrai os detalhes subjacentes para facilitar a criação de AppCards.

Declaração do manifesto

Para criar um AppCard, um app precisa criar um provedor no manifesto para estender 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>

Só é possível definir um provedor por pacote e com estas propriedades:

  • android:exported="true"
  • android:enabled="true"
  • android:permission="@string/host_permission"

    OU

    • android:readPermission="@string/host_permission"

      E

      android:writePermission="@string/host_permission"

  • @string/host_permission existe na biblioteca AppCard e define uma permissão dependendo da versão da API Android do sistema.

    Usar o recurso de string só funciona ao criar com o Gradle. Ao usar Soong, especifique a string explícita com o valor do recurso de string de acordo com o qualificador de recurso apropriado.

  • (padrão) android:grantUriPermissions="false"

  • (padrão) android:forceUriPermissions="false"

    Para evitar resultados inesperados, é necessário que o provedor defina uma única autoridade apenas em android:authorities.

  • Declare um filtro de intent baseado em ação, com.android.car.appcard.APP_CARD_PROVIDER

Estender AppCardContentProvider

Esta seção descreve os métodos finais override e protected.

Modificar métodos

val authority: String
Use esse método para retornar a autoridade definida na propriedade android:authorities do manifesto.

fun onCreate(): Boolean
Esse método precisa chamar super.onCreate(). Use esse método para configurar funcionalidades que podem causar um atraso se forem definidas quando um AppCard é solicitado.

val appCardIds: List
Use esse método para retornar a lista de IDs de AppCard compatíveis. Recomendamos que cada ID seja detalhado, já que essa string é usada para registrar erros.

fun onAppCardAdded(String, AppCardContext): AppCard
Esse método é chamado quando um AppCard é mostrado pela primeira vez e fornece o ID relacionado ao AppCard e o AppCardContext que fornece dicas sobre como o AppCard é exibido.

Use esse método para configurar qualquer funcionalidade exigida pelos AppCards compatíveis como um provedor. Depois que essa função é chamada, o AppCard que corresponde ao ID fornecido é considerado ativo.

fun onAppCardRemoved(String)
Esse método é chamado quando nenhuma outra instância do AppCard é mostrada ao usuário e processa toda a limpeza. Quando essa função é chamada, o AppCard que corresponde ao ID fornecido é considerado inativo
.

fun onAppCardContextChanged(String, AppCardContext)
Esse método é chamado quando o sistema quer atualizar a forma como um AppCard é mostrado e envia um AppCardContext atualizado.

Métodos finais protegidos

fun sendAppCardUpdate(AppCard)
Invoque esse método para enfileirar uma atualização de um AppCard ativo.

fun sendAppCardComponentUpdate(String, Component)
Invoque esse método para enfileirar uma atualização de um componente em um AppCard ativo. Se o componente especificado estiver marcado com EnforceFastUpdateRate, a atualização será enviada imediatamente.

Perguntas frequentes

Onde estão os exemplos de implementação?