使用 AppCardHost 與顯示應用程式資訊卡的應用程式進行通訊。
權限
任何使用 AppCardHost 的應用程式都必須具備下列權限:
android.permission.INTERACT_ACROSS_USERS_FULLandroid.permission.QUERY_ALL_PACKAGES- (僅適用於 API 級別 34 以上)
android.car.permission.BIND_APP_CARD_PROVIDER
初始化
如要初始化主機,請提供:
- 背景資訊
updateRate以毫秒為單位的應用程式資訊卡更新率。fastUpdateRate標記為EnforceFastUpdateRate的元件更新率 (以毫秒為單位)responseExecutor您要接收 AppCard 應用程式回應的執行緒。
設計
AppCardHost 可透過以下兩種方式進行互動:
- 註冊為
AppCardListener
OR
- 與
AppCardHostAPI 互動
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 數量、效能降低和良好使用者體驗之間取得平衡。