ضبط مضيف بطاقة التطبيق

استخدِم AppCardHost للتواصل مع التطبيقات التي تعرض بطاقات التطبيقات.

الأذونات

يجب أن يكون لدى أي تطبيق يستخدم AppCardHost الأذونات التالية:

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (في المستوى 34 من واجهة برمجة التطبيقات والإصدارات الأحدث فقط) android.car.permission.BIND_APP_CARD_PROVIDER

تهيئة

لإعداد المضيف، يجب تقديم ما يلي:

  • السياق
  • updateRate معدّل تعديل بطاقة التطبيق بالمللي ثانية
  • 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?)

يتم تنشيط هذه الدالة عند إزالة مقدّم بطاقة التطبيق أو إيقافه. استخدِم هذه الطريقة لإزالة أي بطاقة تطبيق نشطة مرتبطة باسم الحزمة المُعطى وسلطة الموفِّر.

إذا كانت السلطة هي {@code null}، يعني ذلك أنّه تمت إزالة حزمة كاملة.

fun onProviderAdded(String, String?)

يتم تنشيط هذه الدالة عند إضافة مقدّم خدمة بطاقة التطبيق أو تفعيله.

أمثلة على الاستخدام: استخدِم هذه الدالة كمشغِّل لإعادة تحميل كل ملفّات ‎AppCard المتاحة في أداة اختيار ملفّات ‎AppCard. إذا كانت السلطة هي {@code null}، يعني ذلك أنّه تمت إضافة حزمة كاملة.

fun onPackageCommunicationError(appIdentifier, Throwable)

يتم تنشيط هذه الوظيفة عندما يواجه AppCardHost خطأ عند التواصل مع موفِّر بطاقة التطبيق.

أمثلة على الاستخدام: استخدِم هذه الطريقة لإعلام المستخدم بأنّه حدث خطأ في بطاقة التطبيق التي اختارها.

واجهات برمجة التطبيقات

fun refreshCompatibleapp()

يجب استدعاء هذه الطريقة عند استئناف النشاط الذي يستخدم المضيف كي يتمكّن المضيف من إعادة تحميل قائمة التطبيقات المتوافقة مع بطاقات التطبيقات.

fun destroy()

استخدِم هذه الطريقة عند إتلاف نشاط يستخدم مضيفًا لكي يتمكّن المضيف من تنظيف جميع عمليات الربط والأعضاء الداخليين.

fun registerListener(AppCardListener)

يُستخدَم لتسجيل AppCardListener.

fun unregisterListener(AppCardListener)

يُستخدَم لإلغاء تسجيل AppCardListener.

fun getAllAppCards(AppCardContext)

استخدِم هذه الطريقة لتزويد AppCardListener مسجَّل بجميع بطاقات التطبيقات المقدَّمة في النظام باستخدام AppCardContext معيّن يقدّم إرشادات لموفّري التطبيقات حول كيفية تنظيم بطاقة التطبيق.

fun requestAppCard(AppCardContext, appIdentifier, String)

استخدِم هذه الطريقة لتزويد AppCardListener مسجَّل بأحد بطاقات التطبيقات المحدّدة، وذلك من خلال AppCardContext يقدّم للموفّرين اقتراحات بشأن كيفية تنظيم بطاقة التطبيق الخاصة بهم.

fun notifyAppCardRemoved(appIdentifier, String)

إعلام مقدّم خدمة AppCard بأنّ بطاقة AppCard لم تعُد نشطة

fun notifyAppCardInteraction(appIdentifier, String, String, String)

إرسال إشعار إلى موفّر بطاقة AppCard بأنّه تم التفاعل مع بطاقة AppCard التفاعل الوحيد المسموح به هو النقر على زر، ويُشار إليه بالرمز AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

ننصح بإنشاء زر لـ "بطاقة تطبيق" باستخدام مستمع onClick يُطلِب هذه الدالة باستخدام appIdentifier ورقم تعريف "بطاقة التطبيق" ورقم تعريف العنصر ورقم تعريف التفاعل.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

أرسِل تحديثًا AppCardContext لـ "بطاقة تطبيق" معيّنة. على سبيل المثال، عند التبديل من وضع الركن إلى وضع القيادة، استخدِم هذه الطريقة لإرسال AppCardContext تحديث يتم فيه ضبط isInteractable على false لكل بطاقة تطبيق نشطة.

الأسئلة الشائعة

  1. أين يمكنني العثور على نماذج عمليات التنفيذ؟

    • نموذج المضيف تعرِض هذه الصفحة جميع بطاقات التطبيقات المتاحة في النظام، بالإضافة إلى إمكانات الاختبار.

    • DriverUI وPano manager يعمل Pano manager كأداة اختيار، بينما يعمل DriverUI كمقدّم.

  2. كم عدد بطاقات التطبيقات التي يمكن لكل AppCardContentProvider استخدامها؟

    يمكن أن يتضمّن AppCardContentProvider عددًا غير محدود من بطاقات التطبيقات. ومع ذلك، احرص على موازنة عدد بطاقات التطبيقات ذات الأداء المتدني مع تجربة المستخدم الإيجابية.