הגדרת מארח של AppCard

אפשר להשתמש ב-AppCardHost כדי לתקשר עם אפליקציות שמוצגות בהן כרטיסי אפליקציות.

הרשאות

לכל אפליקציה שמשתמשת ב-AppCardHost צריכות להיות ההרשאות הבאות:

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (ברמת API 34 ואילך בלבד) android.car.permission.BIND_APP_CARD_PROVIDER

התחל

כדי לאתחל את המארח, צריך לספק את הפרטים הבאים:

  • הקשר
  • שיעור העדכון של updateRate AppCard באלפיות השנייה.
  • fastUpdateRate קצב העדכון באלפיות השנייה לרכיבים שמסומנים בתג EnforceFastUpdateRate
  • responseExecutor שרשור שבו רוצים לקבל תשובות מאפליקציות AppCard.

עיצוב

אפשר לבצע פעולות עם AppCardHost בשתי דרכים:

או

AppCardListener

הרכיב AppCardListener מתעדכן ב-AppCardHost כדי לקבל עדכוני תקשורת מאפליקציית AppCardHost ומ-AppCard. כאן מפורטות פונקציות הממשק של AppCardListener.

fun onAppCardReceived(AppCardContainer)

הפונקציה הזו מופעלת כשמתקבלת כרטיס אפליקציה מאפליקציה. היא נשלחת כ-AppCardContainer שמספק כרטיס אפליקציה ו-appIdentifier כדי לזהות את האפליקציה ששלחה את כרטיס האפליקציה

fun onComponentReceived(AppCardComponentContainer)

הפונקציה הזו מופעלת כשמקבלים רכיב של כרטיס אפליקציה מאפליקציה. הוא נשלח כ-AppCardComponentContainer, שמספק רכיב של כרטיסי אפליקציה, Identifier, כדי לזהות את האפליקציה ששלחה את כרטיס האפליקציה, ומזהה מחרוזת כדי להצביע על כרטיס האפליקציה שאליו הרכיב קשור.

fun onProviderRemoved(String, String?)

הפונקציה הזו מופעלת כשספק של כרטיס AppCard הוסר או הושבת. משתמשים בשיטה הזו כדי לנקות כל כרטיס AppCard פעיל שקשור לשם החבילה ולסמכות הספק שצוינו.

אם הערך של authority הוא {@code null}, המשמעות היא שהחבילה כולה הוסרה.

fun onProviderAdded(String, String?)

הפונקציה הזו מופעלת כשספק של כרטיס AppCard נוסף או מופעל.

דוגמה לשימוש אפשר להשתמש בפונקציה הזו כטריגר כדי לרענן את כל כרטיסי האפליקציות הזמינים בבורר של כרטיסי האפליקציות. אם הערך של authority הוא {@code null}, המשמעות היא שנוספה חבילה שלמה.

fun onPackageCommunicationError(appIdentifier, Throwable)

הפונקציה הזו מופעלת כש-AppCardHost נתקל בשגיאה בתקשורת עם ספק של כרטיס AppCard.

דוגמה לשימוש משתמשים בשיטה הזו כדי להציג למשתמש שהתרחשה שגיאה ב-AppCard שבחר.

ממשקי API

fun refreshCompatibleapp()

צריך לקרוא למתודה הזו בכל פעם שהפעילות שמשתמשת במארח ממשיכה, כדי שהמארח יוכל לרענן את רשימת האפליקציות שתומכות ב-AppCards.

fun destroy()

צריך להפעיל את השיטה הזו כשפעילות שמשתמשת במארח נהרסת, כדי שהמארח יוכל לנקות את כל החיבורים והחברים הפנימיים.

fun registerListener(AppCardListener)

משמש לרישום AppCardListener.

fun unregisterListener(AppCardListener)

משמשת לביטול הרישום של AppCardListener.

fun getAllAppCards(AppCardContext)

קוראים ל-method הזה כדי לספק ל-AppCardListener הרשום את כל כרטיסי ה-AppCard שסופקו במערכת עם AppCardContext נתון, שמספק לספקים טיפים לגבי מבנה של כרטיס ה-AppCard שלהם.

fun requestAppCard(AppCardContext, appIdentifier, String)

קוראים לשיטה הזו כדי לספק ל-AppCardListener רשום AppCard ספציפי, על סמך AppCardContext שמספק לספקים טיפים לגבי מבנה ה-AppCard שלהם.

fun notifyAppCardRemoved(appIdentifier, String)

איך מודיעים לספק של כרטיס AppCard שהכרטיס לא פעיל יותר

fun notifyAppCardInteraction(appIdentifier, String, String, String)

לדווח לספק של כרטיס AppCard על אינטראקציה עם כרטיס AppCard שלו. האינטראקציה היחידה שנתמכת היא לחיצה על לחצן, שמסומנת ב-AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

מומלץ ליצור לחצן ל-AppCard עם מאזין onClick שמפעיל את הפונקציה הזו עם appIdentifier, מזהה AppCard, מזהה רכיב ומזהה אינטראקציה.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

שליחת עדכון AppCardContext של כרטיס אפליקציה ספציפי. לדוגמה, כשעוברים ממצב 'חניה' למצב 'נסיעה', משתמשים בשיטה הזו כדי לשלוח עדכון AppCardContext שבו isInteractable מוגדר ל-false לכל כרטיס אפליקציה פעיל.

שאלות נפוצות

  1. איפה אפשר למצוא הטמעות לדוגמה?

    • מארח לדוגמה. כאן מוצגות כל כרטיסי האפליקציות שזמינים במערכת, יחד עם יכולות הבדיקה.

    • DriverUI ו-Pano Manager. מנהל Pano פועל בתור הבורר, ו-DriverUI פועל בתור המציג.

  2. כמה כרטיסי אפליקציה כל AppCardContentProvider יכול לתמוך?

    AppCardContentProvider יכול לתמוך במספר אינסופי של כרטיסי אפליקציה. עם זאת, חשוב לאזן בין מספר כרטיסי האפליקציות לבין פגיעה בביצועים לעומת חוויית משתמש חיובית.