使用 AppCardHost
與顯示應用程式資訊卡的應用程式進行通訊。
權限
任何使用 AppCardHost
的應用程式都必須具備下列權限:
android.permission.INTERACT_ACROSS_USERS_FULL
android.permission.QUERY_ALL_PACKAGES
- (僅適用於 API 級別 34 以上)
android.car.permission.BIND_APP_CARD_PROVIDER
初始化
如要初始化主機,請提供:
- 背景資訊
updateRate
以毫秒為單位的應用程式資訊卡更新率。fastUpdateRate
標記為EnforceFastUpdateRate
的元件更新率 (以毫秒為單位)responseExecutor
您要接收 AppCard 應用程式回應的執行緒。
設計
AppCardHost
可透過以下兩種方式進行互動:
- 註冊為
AppCardListener
OR
- 與
AppCardHost
API 互動
AppCardListener
AppCardListener
元件會將自身註冊為 AppCardHost
,以便接收來自 AppCardHost
和 AppCard 應用程式的通訊更新。以下是 AppCardListener
的介面函式詳細說明。
fun onAppCardReceived(AppCardContainer)
AppCardContainer
的形式傳送,提供 AppCard 和 appIdentifier
,用於識別傳送 AppCard 的應用程式fun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
的形式傳送,該函式會提供 AppCard 元件、Identifier
(用於識別傳送 AppCard 的應用程式),以及字串 ID (用於指向元件相關聯的 AppCard)。fun onProviderRemoved(String, String?)
如果權限為 {@code null}
,則整個套件都已移除。
fun onProviderAdded(String, String?)
用法示範。使用這個函式做為觸發事件,即可在 AppCard 挑選器中重新整理所有可用的 AppCard。如果權限為 {@code null}
,則表示已新增整個套件。
fun onPackageCommunicationError(appIdentifier, Throwable)
AppCardHost
與 AppCard 供應器通訊時發生錯誤,就會觸發這個函式。
用法示範。使用這個方法,向使用者顯示他們所選的 AppCard 發生錯誤。
API
fun refreshCompatibleapp()
fun destroy()
fun registerListener(AppCardListener)
AppCardListener
。fun unregisterListener(AppCardListener)
AppCardListener
。fun getAllAppCards(AppCardContext)
AppCardListener
提供系統中提供的所有 AppCard,並使用特定 AppCardContext
向供應器提供有關如何建構 AppCard 的提示。fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
提供特定 AppCard,前提是您提供 AppCardContext
,讓提供者瞭解如何建構 AppCard。fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
表示。onClick
事件監聽器,以 appIdentifier
、AppCard ID、元件 ID 和互動 ID 呼叫此函式。fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
更新。舉例來說,當您從停車模式切換至行車模式時,請使用這個方法傳送 AppCardContext
更新,其中 isInteractable
會針對每個有效的 AppCard 設為 false
。常見問題
哪裡可以找到實作範例?
範例主機。顯示系統中所有可用的 AppCard 和測試功能。
DriverUI 和 Pano Manager。Pano 管理員會做為挑選器,而 DriverUI 會做為呈現工具。
每個
AppCardContentProvider
可支援多少個 AppCard?AppCardContentProvider
可支援無限數量的 AppCard。不過,請務必在 AppCard 數量、效能降低和良好使用者體驗之間取得平衡。