از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
اجرای طرح های داده
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Android 9 به شرکتهای مخابراتی اجازه میدهد تا به طور مستقیم جزئیات طرح معتبر را در برنامه تنظیمات به کاربران ارائه دهند تا سردرگمی کاربر را کاهش داده و از تماسها پشتیبانی کند. در دستگاههای دارای Android نسخه 4.0 و بالاتر، کاربران میتوانند به صورت دستی جزئیات طرح داده خاص شرکت مخابراتی خود را در برنامه تنظیمات پیکربندی کنند، برای مثال، هشدارها و محدودیتهایی را برای مدیریت مصرف داده خود تنظیم کنند.
پیکربندی توسط حامل
برای پیکربندی طرحهای داده، شرکتهای مخابراتی میتوانند با استفاده از APIهای SubscriptionPlan
عملکردی را به برنامههای Android موجود خود اضافه کنند. APIها برای پشتیبانی از طیف گسترده ای از انواع طرح های داده، از جمله برنامه های تکراری و غیر تکراری و برنامه هایی که در طول زمان تغییر می کنند، طراحی شده اند.
در اینجا مثالی از نحوه پیکربندی یک نوع معمولی از طرح داده است که هر ماه تکرار می شود:
SubscriptionManager sm =
context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
SubscriptionPlan.Builder.createRecurringMonthly(
ZonedDateTime.parse("2016-12-03T10:00:00Z"))
.setTitle("G-Mobile")
.setDataLimit(4_000_000_000L,
SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
.setDataUsage(200_493_293L, dataUsageTimestamp)
.build()));
دستگاه فقط به برنامه اجازه میدهد برنامههای داده را تحت یکی از این شرایط پیکربندی کند:
- سیم کارت به صراحت برنامه ای را تعریف کرده است که می تواند آن را مدیریت کند، همانطور که توسط
SubscriptionManager.canManageSubscription()
تعریف شده است. - شرکت مخابراتی مقدار
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
را از طریق CarrierConfigManager
فشار داده است تا مشخص کند کدام برنامه میتواند برنامههای داده شرکت مخابراتی را مدیریت کند. - دستگاه دارای یک برنامه در تصویر سیستم است که دارای مجوز
MANAGE_SUBSCRIPTION_PLANS
است.
دو شرط اول، برنامه حامل را قادر میسازد که توسط کاربر نصب شود، بدون نیاز به نصب از قبل در تصویر سیستم در کارخانه. سیستم عامل الزام می کند (و CDD ایجاب می کند) که همه جزئیات طرح داده های پیکربندی شده محافظت می شوند و فقط برای برنامه حاملی که در ابتدا جزئیات را در اختیار سیستم عامل قرار داده است در دسترس قرار می گیرند.
یکی از طرحهای پیشنهادی این است که یک برنامه حامل از یک سرویس نگهداری غیرفعال برای بهروزرسانی جزئیات طرح داده به صورت روزانه استفاده کند، اما شرکتهای مخابراتی در استفاده از طیف وسیعی از مکانیسمها آزادند، مانند دریافت جزئیات طرح داده از طریق پیامهای SMS داخلی شرکت مخابراتی. خدمات نگهداری بیحرکت به بهترین وجه با یک کار JobScheduler
که از setRequiresDeviceIdle()
و setRequiresCharging()
استفاده میکند، پیادهسازی میشوند.
استفاده توسط سیستم عامل
سیستم عامل از جزئیات طرح داده ارائه شده توسط SubscriptionPlan API به روش های زیر استفاده می کند:
- جزئیات طرح از طریق برنامه تنظیمات نمایش داده میشود تا میزان استفاده دقیق از داده را برای کاربران نمایش دهد و پیوندهای عمیق مستقیمی را به برنامه حامل برای فرصتهای ارتقا/فروش بالا ارائه دهد.
- هشدار مصرف داده و آستانه اعلان محدودیت به طور خودکار بر اساس جزئیات طرح پیکربندی می شوند. اخطار روی 90 درصد حد تعیین شده است.
- اگر شرکت مخابراتی به طور موقت نشان دهد که شبکه "متراکم" است، سیستم عامل کارهای JobScheduler را که می توانند در زمان جابجایی زمانی انجام دهند به تاخیر می اندازد و بار روی شبکه حامل را کاهش می دهد.
- اگر حامل به طور موقت نشان دهد که شبکه «بدون اندازهگیری» است، سیستمعامل میتواند اتصال سلولی را بهعنوان «بدون اندازهگیری» گزارش کند تا زمانی که شرکت مخابراتی نادیدهگرفتن را پاک کند، یا تا زمانی که به مقدار مهلت زمانی (در صورت ارائه) برسد.
- با مقایسه مصرف فعلی کاربر با محدودیت کلی داده، سیستمعامل مصرف عادی داده کاربر را در پایان چرخه صورتحساب تخمین میزند و به طور محافظهکارانه 10 درصد از دادههای مازاد را برای بهبود تجربه کاربر تخصیص میدهد، مثلاً با اجازه دادن به برنامهها برای استفاده از دادههای چند مسیری.
سفارشی سازی و اعتبار سنجی
برنامه تنظیمات Android تمام جزئیات طرح داده پیکربندی شده توسط شرکت مخابراتی را نمایش میدهد و اطمینان میدهد که کاربران دقیقترین وضعیت ارتباط شرکت مخابراتی خود را میبینند و به کاربران مسیری را برای ورود به برنامه شرکت مخابراتی پیشنهاد میکند تا طرح خود را ارتقا دهند. به سازندگان دستگاههایی که برنامه تنظیمات را سفارشی میکنند، توصیه میشود به بررسی این جزئیات ادامه دهند.
APIهای SubscriptionManager
که در این صفحه توضیح داده شده اند توسط android.telephony.cts.SubscriptionManagerTest
آزمایش می شوند، که تضمین می کند جزئیات طرح داده را می توان توسط برنامه های حامل پیکربندی کرد و تغییرات در سیستم عامل منتشر می شود.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Implement data plans\n\nAndroid 9 lets carriers directly provide authoritative\nplan details to users in the Settings app to reduce user confusion and support\ncalls. On devices running Android 4.0 and higher, users are able to manually\nconfigure their carrier-specific data plan details in the Settings app, for\nexample, setting warnings and limits to manage their data usage.\n\nConfiguration by carrier\n------------------------\n\nTo configure data plans, carriers can add functionality to their existing\nAndroid apps using the\n[`SubscriptionPlan` APIs](https://developer.android.com/reference/android/telephony/SubscriptionPlan.Builder).\nThe APIs are designed to support a wide range of data plan types, including both\nrecurring and non-recurring plans, and plans that change over time.\n\nHere's an example of how to configure a common type of data plan that recurs\nmonthly: \n\n SubscriptionManager sm =\n context.getSystemService(SubscriptionManager.class);\n sm.setSubscriptionPlans(subId, Lists.newArrayList(\n SubscriptionPlan.Builder.createRecurringMonthly(\n ZonedDateTime.parse(\"2016-12-03T10:00:00Z\"))\n .setTitle(\"G-Mobile\")\n .setDataLimit(4_000_000_000L,\n SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)\n .setDataUsage(200_493_293L, dataUsageTimestamp)\n .build()));\n\nThe device only lets an app configure data plans under one of these conditions:\n\n- The SIM card has explicitly defined an app that can manage it, as defined by [`SubscriptionManager.canManageSubscription()`](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#canManageSubscription(android.telephony.SubscriptionInfo)).\n- The carrier has pushed the [`KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING) value via `CarrierConfigManager` to indicate which app can manage the carrier's data plans.\n- The device has an app built into the system image that has the `MANAGE_SUBSCRIPTION_PLANS` permission.\n\nThe first two conditions enable the carrier app to be installed by the user,\nwithout requiring that it be pre-installed into the system image at the factory.\nThe OS enforces (and the CDD requires) that all configured data plan details are\nprotected and are only made available to the carrier app that originally\nprovided the details to the OS.\n\nOne suggested design is for a carrier app to use an idle maintenance service to\nupdate data plan details on a daily basis, but carriers are free to use a wide\nrange of mechanisms, such as receiving data plan details through carrier-internal\nSMS messages. Idle maintenance services are best implemented with a\n`JobScheduler` job that uses\n[`setRequiresDeviceIdle()`](https://developer.android.com/reference/android/app/job/JobInfo.Builder#setRequiresDeviceIdle(boolean))\nand\n[`setRequiresCharging()`](https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiresCharging(boolean)).\n\nUsage by OS\n-----------\n\nThe OS uses the data plan details provided by the SubscriptionPlan APIs in the\nfollowing ways:\n\n- The plan details are surfaced via the Settings app to display accurate data usage to users and to provide [direct deep links into the carrier app](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#ACTION_MANAGE_SUBSCRIPTION_PLANS) for upgrade/upsell opportunities.\n- The data usage warning and limit notification thresholds are automatically configured based on the plan details; the warning is set to 90% of the limit.\n- If the carrier temporarily indicates the network is [\"congested\"](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionOverrideCongested(int,%20boolean,%20long)), the OS delays JobScheduler jobs that can be time-shifted, reducing the load on the carrier network.\n- If the carrier temporarily indicates the network is [\"unmetered\"](https://developer.android.com/reference/android/telephony/SubscriptionManager#setSubscriptionOverrideUnmetered(int,%20boolean,%20long)), the OS can report the cellular connection as \"unmetered\" until the carrier clears the override, or until the timeout value (if provided) is reached.\n- By comparing the user's current data usage with the overall data limit, the OS estimates the user's normal data usage at the end of the billing cycle and conservatively allocates 10% of any surplus data to improve the user experience, for example, by letting apps use multi-path data.\n\nCustomization and validation\n----------------------------\n\nThe Android Settings app displays all carrier-configured data plan details,\nensuring that users see the most accurate status of their carrier relationship,\nand offering users a path into the carrier app to upgrade their plan. Device\nmanufacturers choosing to customize the Settings app are recommended to continue\nsurfacing these details.\n\nThe `SubscriptionManager` APIs described on this page are tested by\n`android.telephony.cts.SubscriptionManagerTest`, which ensures that data plan\ndetails can be configured by carrier apps and that changes are propagated within\nthe OS."]]