از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
یک AppCard ایجاد کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای ایجاد یک AppCard، یک برنامه باید ارائه دهنده ای در مانیفست ایجاد کند که AppCardContentProvider
گسترش دهد. AppCardContentProvider
جزئیات اساسی را برای تسهیل ایجاد AppCards خلاصه می کند.
اعلامیه آشکار
برای ایجاد یک AppCard، یک برنامه باید یک ارائه دهنده در مانیفست ایجاد کند تا AppCardContentProvider
گسترش دهد.
<provider android:name=".SimpleAppCardContentProvider"
android:authorities="com.example.appcard.sample.media"
android:permission="@string/host_permission"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.android.car.appcard.APP_CARD_PROVIDER" />
</intent-filter>
</provider>
فقط یک ارائه دهنده را می توان در هر بسته و با این ویژگی ها تعریف کرد :
-
android:exported="true"
-
android:enabled="true"
android:permission="@string/host_permission"
یا،
@string/host_permission
در کتابخانه AppCard وجود دارد و بسته به نسخه Android API سیستم، مجوزی را تعریف میکند.
استفاده از منبع رشته فقط هنگام ساخت با Gradle کار می کند. هنگام استفاده از Soong، رشته صریح را با مقدار منبع رشته با توجه به واجد شرایط منبع مناسب مشخص کنید.
( پیشفرض ) android:grantUriPermissions="false"
( پیشفرض ) android:forceUriPermissions="false"
برای جلوگیری از نتایج غیرمنتظره، لازم است که ارائه دهنده یک مرجع تنها در android:authorities
تعریف کند.
یک فیلتر هدف مبتنی بر اقدام، com.android.car.appcard.APP_CARD_PROVIDER
اعلام کنید
AppCardContentProvider را گسترش دهید
این بخش روش های نهایی را باطل و محافظت شده شرح می دهد.
نادیده گرفتن روش ها
val authority: String
از این روش برای برگرداندن اعتبار تعریف شده در ویژگی android:authorities
manifest استفاده کنید. fun onCreate(): Boolean
این متد باید super.onCreate()
را فراخوانی کند. از این روش برای راهاندازی عملکردی استفاده کنید که در صورت درخواست AppCard، میتواند باعث تأخیر شود. val appCardIds: List
از این روش برای بازگرداندن لیست شناسه های AppCard پشتیبانی شده استفاده کنید. توصیه میکنیم هر شناسه را به صورت کامل بسازید زیرا از این رشته برای ثبت خطاها استفاده میشود. fun onAppCardAdded(String, AppCardContext): AppCard
این روش زمانی فراخوانی می شود که یک AppCard برای اولین بار نشان داده می شود و شناسه مربوط به AppCard و AppCardContext
را ارائه می دهد که نکاتی را در مورد نحوه نمایش AppCard ارائه می دهد. از این روش برای تنظیم هر گونه عملکرد مورد نیاز AppCardهایی که به عنوان ارائه دهنده پشتیبانی می شوند، استفاده کنید. پس از فراخوانی این تابع، AppCard که با شناسه داده شده مطابقت دارد فعال در نظر گرفته می شود.
fun onAppCardRemoved(String)
این روش زمانی فراخوانی میشود که هیچ نمونهای از AppCard باقیمانده به کاربر نشان داده نشود و تمام پاکسازیها را انجام دهد. هنگامی که این تابع فراخوانی می شود، AppCard مربوط به شناسه داده شده غیرفعال در نظر گرفته می شود. fun onAppCardContextChanged(String, AppCardContext)
این روش زمانی فراخوانی می شود که سیستم می خواهد نحوه نمایش AppCard را به روز کند و یک AppCardContext
به روز شده ارسال می کند. روش های نهایی محافظت شده
fun sendAppCardUpdate(AppCard)
این روش را فراخوانی کنید تا یک بهروزرسانی برای یک AppCard فعال در صف قرار دهید. fun sendAppCardComponentUpdate(String, Component)
این روش را فراخوانی کنید تا یک بهروزرسانی برای یک جزء در یک AppCard فعال در صف قرار دهید. اگر مؤلفه داده شده با EnforceFastUpdateRate
برچسب گذاری شده باشد، به روز رسانی بلافاصله ارسال می شود. سوالات متداول
پیاده سازی های نمونه کجا هستند؟
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-06-12 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-06-12 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Create an AppCard\n\nTo create an AppCard, an app must create a provider in the manifest that extends\n`AppCardContentProvider`. The `AppCardContentProvider` abstracts away underlying\ndetails to facilitate the creation of AppCards.\n\nManifest declaration\n--------------------\n\nTo create an AppCard, an app must create a provider in the manifest to extend\n`AppCardContentProvider`. \n\n \u003cprovider android:name=\".SimpleAppCardContentProvider\"\n android:authorities=\"com.example.appcard.sample.media\"\n android:permission=\"@string/host_permission\"\n android:exported=\"true\"\n android:enabled=\"true\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"com.android.car.appcard.APP_CARD_PROVIDER\" /\u003e\n \u003c/intent-filter\u003e\n \u003c/provider\u003e\n\n**Only one provider can be defined per package** and with these properties:\n\n- `android:exported=\"true\"`\n- `android:enabled=\"true\"`\n- `android:permission=\"@string/host_permission\"`\n\n OR,\n - `android:readPermission=\"@string/host_permission\"`\n\n AND,\n\n `android:writePermission=\"@string/host_permission\"`\n- `@string/host_permission` exists in the AppCard library and defines a\n permission depending on the Android API version of the system.\n\n Using the string resource works only when building with Gradle. When using\n Soong, specify the explicit string with the string resource value according\n to the appropriate resource qualifier.\n- (*default* ) `android:grantUriPermissions=\"false\"`\n\n- (*default* ) `android:forceUriPermissions=\"false\"`\n\n To avoid unexpected results, it's required that the provider define a single\n authority **only** in `android:authorities`.\n- Declare an action-based intent filter,\n `com.android.car.appcard.APP_CARD_PROVIDER`\n\nExtend AppCardContentProvider\n-----------------------------\n\nThis section describes **override** and **protected** final methods.\n\n### Override methods\n\n\u003cbr /\u003e\n\n`val authority: String` Use this method to return the authority defined in the `android:authorities` manifest property.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onCreate(): Boolean` This method must call `super.onCreate()`. Use this method to set up functionality that could potentially cause a delay if set up when an AppCard is requested.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`val appCardIds: List` Use this method to return the list of supported AppCard IDs. We recommend making each ID verbose since this string is used to log errors.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardAdded(String, AppCardContext): AppCard` This method is called when an AppCard is shown for the first time and provides the ID related to the AppCard and the `AppCardContext` that provide hints as to how the AppCard is displayed.\n\n\u003cbr /\u003e\n\nUse this method to set up any functionality required by the AppCards\nsupported as a provider. Once this function is called, the AppCard that\ncorresponds to the given ID is considered to be **active.**\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardRemoved(String)` This method is called when no remaining instances of the AppCard are shown to the user and handles all clean up. When this function is called, the AppCard that corresponds to the given ID is considered **inactive.**\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardContextChanged(String, AppCardContext)` This method is called when the system wants to update how an AppCard is displayed and sends an updated `AppCardContext`.\n\n\u003cbr /\u003e\n\n### Protected final methods\n\n\u003cbr /\u003e\n\n`fun sendAppCardUpdate(AppCard)` Invoke this method to queue an update for an active AppCard.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun sendAppCardComponentUpdate(String, Component)` Invoke this method to queue an update for a component in an active AppCard. If the given component is tagged with `EnforceFastUpdateRate`, then the update is sent immediately.\n\n\u003cbr /\u003e\n\nFAQ\n---\n\nWhere are the sample implementations?\n\n- [Calendar AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-calendar-app/)\n- [Media AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-media-app/)\n- [Weather AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-weather-app/)"]]