AppCard ana makinesini yapılandırma

Uygulama kartlarını gösteren uygulamalarla iletişim kurmak için AppCardHost simgesini kullanın.

İzinler

AppCardHost kullanan tüm uygulamalar aşağıdaki izinlere sahip olmalıdır:

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (Yalnızca API düzeyi 34 ve sonraki sürümlerde) android.car.permission.BIND_APP_CARD_PROVIDER

Başlat

Ana makineyi başlatmak için şunları sağlayın:

  • Bağlam
  • updateRate Milisaniye cinsinden AppCard güncelleme hızı.
  • fastUpdateRate EnforceFastUpdateRate ile etiketlenen bileşenler için milisaniye cinsinden güncelleme hızı
  • responseExecutor AppCard uygulamalarından yanıt almak istediğiniz ileti dizisi.

Tasarım

AppCardHost ile iki şekilde etkileşim kurulabilir:

VEYA,

AppCardListener

AppCardListener bileşeni, AppCardHost ve AppCard uygulamalarından iletişim güncellemeleri almak için kendisini bir AppCardHost'a kaydeder. AppCardListener arayüz işlevleri burada ayrıntılı olarak açıklanmıştır.

fun onAppCardReceived(AppCardContainer)

Bu işlev, bir uygulamadan AppCard alındığında tetiklenir. AppCard'ı gönderen uygulamayı tanımlamak için bir AppCard ve appIdentifier sağlayan bir AppCardContainer olarak gönderilir
.

fun onComponentReceived(AppCardComponentContainer)

Bu işlev, bir uygulamadan AppCard bileşeni alındığında tetiklenir. AppCard'ı gönderen uygulamayı tanımlamak için bir AppCards bileşeni, Identifier ve bileşenin ilişkili olduğu AppCard'ı işaretlemek için bir dize kimliği sağlayan bir AppCardComponentContainer olarak gönderilir.

fun onProviderRemoved(String, String?)

Bu işlev, bir AppCard sağlayıcısı kaldırıldığında veya devre dışı bırakıldığında tetiklenir. Belirtilen paket adı ve sağlayıcı yetkilisiyle ilgili etkin AppCard'ları temizlemek için bu yöntemi kullanın.

Yetki {@code null} ise paketin tamamı kaldırılmıştır.

fun onProviderAdded(String, String?)

Bu işlev, bir AppCard sağlayıcı eklendiğinde veya etkinleştirildiğinde tetiklenir.

Örnek kullanım. Bir uygulama kartı seçicideki tüm uygulama kartlarını yenilemek için bu işlevi tetikleyici olarak kullanın. Yetki {@code null} ise paketin tamamı eklenmiştir.

fun onPackageCommunicationError(appIdentifier, Throwable)

Bu işlev, AppCardHost bir AppCard sağlayıcısıyla iletişim kurarken hatayla karşılaştığında tetiklenir.

Örnek kullanım. Kullanıcıya, seçtiği bir uygulama kartında hata olduğunu göstermek için bu yöntemi kullanın.

API'ler

fun refreshCompatibleapp()

Bu yöntem, ana makineyi kullanan etkinlik devam ettirildiğinde çağrılmalıdır. Böylece ana makine, uygulama kartlarını destekleyen uygulama listesini yenileyebilir.

fun destroy()

Toplantı sahibi kullanan bir etkinlik yok edildiğinde bu yöntemi çağırarak toplantı sahibinin tüm bağlantıları ve dahili üyeleri temizlemesini sağlayın.

fun registerListener(AppCardListener)

AppCardListener kaydetmek için kullanılır.

fun unregisterListener(AppCardListener)

AppCardListener kaydını iptal etmek için kullanılır.

fun getAllAppCards(AppCardContext)

Kayıtlı bir AppCardListener'ye sistemde sağlanan tüm uygulama kartlarını sağlamak için bu yöntemi çağırın. Bu yöntem, sağlayıcılara uygulama kartlarını nasıl yapılandıracakları konusunda ipuçları sağlayan belirli bir AppCardContext ile birlikte kullanılır.

fun requestAppCard(AppCardContext, appIdentifier, String)

Kayıtlı bir AppCardListener'ye belirli bir AppCard sağlamak için bu yöntemi çağırın. Bu yöntemde, sağlayıcılara AppCard'larını nasıl yapılandıracakları konusunda ipuçları veren bir AppCardContext sağlanır.

fun notifyAppCardRemoved(appIdentifier, String)

Uygulama kartı sağlayıcıyı, uygulama kartının artık etkin olmadığını bildirme.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Bir uygulama kartı sağlayıcıyı, uygulama kartıyla etkileşim kurulduğunu bildirme. Yalnızca düğme tıklaması desteklenir ve bu AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK ile gösterilir.

Bir uygulama kartı için appIdentifier, uygulama kartı kimliği, bileşen kimliği ve etkileşim kimliğiyle bu işlevi çağıran bir onClick dinleyici içeren bir düğme oluşturmanızı öneririz.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Belirli bir uygulama kartı için AppCardContext güncellemesi gönderin. Örneğin, Park modundan Sürüş moduna geçerken her etkin AppCard için isInteractable değerinin false olarak ayarlandığı bir AppCardContext güncellemesi göndermek üzere bu yöntemi kullanın.

SSS

  1. Örnek uygulamaları nerede bulabilirim?

    • Örnek ana makine. Test özellikleriyle birlikte sistemdeki tüm uygulama kartlarını gösterir.

    • DriverUI ve Pano yöneticisi. Pano yöneticisi seçici, DriverUI ise sunucu görevi görür.

  2. Her AppCardContentProvider kaç tane uygulama kartı destekleyebilir?

    AppCardContentProvider, sınırsız sayıda uygulama kartı destekleyebilir. Ancak uygulama kartlarının sayısını, performansın düşmesiyle olumlu kullanıcı deneyimi arasında dengeye getirin.