از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
شناسایی حامل
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دستگاههای دارای Android 9 میتوانند اطلاعات شرکت مخابراتی را برای ارائه شناسه و نام شرکت مخابراتی تشخیص دهند. Android یک پایگاه داده شناسه حامل، با قوانین تطبیق برای هر شرکت مخابراتی و شناسه حامل منحصربهفرد آن، نگهداری میکند. AOSP شامل محتوای پایگاه داده شناسه حامل، در فایل carrier_list.textpb
است. پایگاه داده یکپارچه منطق تکراری را در برنامههایی که نیاز به شناسایی حاملها دارند به حداقل میرساند و قرار گرفتن در معرض ویژگیهای شناسایی حامل را محدود میکند.
برای بهبود پوشش و دقت شناسایی شرکت مخابراتی، Android از بهروزرسانیهای جدول شناسه حامل و خارج از باند پشتیبانی میکند. هر به روز رسانی دارای یک شماره نسخه است و در AOSP منتشر می شود.
پیاده سازی
کاربرانی که می خواهند به روز رسانی های خارج از باند را پیاده سازی کنند، می توانند باینری carrier_list.pb
از AOSP دانلود کنند. برای مشاهده قالب قابل خواندن جدول، carrier_list.textpb
ببینید.
جدول شناسه حامل را در پارتیشن /data/misc/carrierid/
دستگاه قرار دهید. اگر جدول شناسه حامل جدیدتر از نسخه موجود باشد، دستگاه جدول را در کلاس پایگاه داده شناسه حامل قرار می دهد. جدیدترین اطلاعات از پایگاه داده شناسه حامل توسط متدهای عمومی getSimCarrierId()
و getSimCarrierIdName()
برداشت می شود.
برای افزودن یا به روز رسانی شناسه حامل به پایگاه داده، با استفاده از فرم اطلاعات شناسایی حامل ، درخواست ارسال کنید.
درخواست شما بررسی می شود و در صورت تایید، تغییر به پایگاه کد AOSP در carrier_list.pb
منتقل می شود. سپس می توانید لیست به روز شده را کپی کرده و آن را در ساخت سفارشی خود بگنجانید.
شناسه های حامل را با CarrierConfig ادغام کنید
از Android 10، پیکربندی شرکت مخابراتی از استفاده از شناسه شرکت مخابراتی به عنوان کلید برای واکشی پیکربندیهای شرکت مخابراتی خاص از CarrierService
پشتیبانی میکند.
ادغام شناسه های حامل با CarrierConfig
دارای مزایای زیر است:
- تمام جفتهای MCC/MNC را برای هر حامل در یک مکان واحد ادغام میکند و دادههای تکراری یا متناقض را حذف میکند.
- یک شناسه متعارف برای هر حامل ایجاد می کند و ابهام را برطرف می کند.
- به اپراتورهای شبکه مجازی تلفن همراه (MVNO) اجازه می دهد به جای داشتن پیکربندی به عنوان بخشی از اپراتور شبکه تلفن همراه (MNO) با شناسه های فردی شناسایی شوند.
انتقال دادههای پیکربندی به شناسههای شرکت مخابراتی
برای انتقال دادههای پیکربندی از جفتهای MCC/MNC به شناسههای حامل، این مراحل را دنبال کنید:
فایلهای carrier_config_mccmnc.xml
را از یک حامل واحد با هم گروهبندی کنید. از carrier_list.textpb
به عنوان مرجع برای نگاشت اطلاعات MCC، MNC و MVNO به یک حامل خاص استفاده کنید.
تنظیمات را در یک فایل ادغام کنید.
(اختیاری) داده ها را از MNO به ارث می برند. MVNO ها پیکربندی ها را از MNO ها در فایل carrier_config_mccmnc.xml
قدیمی به ارث می برند. از آنجایی که شناسههای حامل به همه اپراتورها از جمله MVNO اجازه میدهند یک فایل پیکربندی اختصاصی داشته باشند، توصیه میشود که دادههای MNO را در حین انتقال اضافه کنید.
اگر پیکربندی شناسه حامل MVNO وجود ندارد، پیکربندی را از شناسه حامل MNO آن با استفاده از getCarrierIdFromSimMccMnc
واکشی کنید.
تغییر نام فایل جدید به عنوان carrier_config_carrierid_ carrierid _ carriername .xml
که در آن carrierid باید با canonical_id
و carriername باید با carrier_name
در carrier_list.textpb
مطابقت داشته باشد.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و 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,["# Carrier identification\n\nDevices running Android 9 can recognize subscription\ncarrier information to\nprovide an ID and a carrier name. Android maintains a carrier ID database, with\nmatching rules for each carrier and its unique carrier ID. AOSP includes the\ncontent of the carrier ID database, in the file\n[`carrier_list.textpb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.textpb).\nThe unified database minimizes duplicate logic in apps that need to identify\ncarriers and limits the exposure of carrier-identifying attributes.\n\nTo improve the coverage and accuracy of carrier identification, Android supports\nout-of-band and carrier ID table updates. Each update comes with a version\nnumber and is published to AOSP.\n\nImplementation\n--------------\n\nUsers who want to implement out-of-band updates can download the\n[`carrier_list.pb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.pb)\nbinary from AOSP. To view the readable format of the table, see\n[`carrier_list.textpb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.textpb).\n\nPlace the carrier ID table in the `/data/misc/carrierid/` data partition of the\ndevice. If the carrier ID table is newer than the existing version, the device\npersists the table to the\n[carrier ID database class](https://developer.android.com/reference/android/provider/Telephony.CarrierId).\nThe most recent information from the carrier ID database is picked up by the\npublic methods\n[`getSimCarrierId()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierId())\nand\n[`getSimCarrierIdName()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierIdName()).\n\nAdd carrier ID information to the database\n------------------------------------------\n\nTo add or update a carrier ID to the database, submit a request using the\n[Carrier identification information form](https://docs.google.com/forms/d/1KjwTaExKRjkE9tbR9yavBrGzwvuz1dNku2Ae_7GrdUQ/viewform?edit_requested=true).\n\nYour request is reviewed and if approved, the change is pushed to the AOSP code\nbase at\n[`carrier_list.pb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.pb).\nYou can then copy the updated list and incorporate it into your customized\nbuild.\n\nIntegrate carrier IDs with CarrierConfig\n----------------------------------------\n\nStarting from Android 10,\n[carrier configuration](/docs/core/connect/carrier) supports\nusing carrier IDs as keys to fetch carrier-specific configurations from\n[`CarrierService`](https://developer.android.com/reference/android/service/carrier/CarrierService).\n\nIntegrating carrier IDs with `CarrierConfig` has the following advantages:\n\n- Consolidates all MCC/MNC pairs for each carrier into a single location removing duplicate or inconsistent data.\n- Creates a canonical identifier for each carrier and removes ambiguity.\n- Allows mobile virtual network operators (MVNOs) to be identified with individual IDs instead of having configurations as part of a mobile network operator (MNO).\n\n### Migrate configuration data to carrier IDs\n\nTo migrate configuration data from MCC/MNC pairs to carrier IDs, follow\nthese steps:\n\n1. Group the `carrier_config_mccmnc.xml` files from a single carrier together.\n Use\n [`carrier_list.textpb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.textpb)\n as a reference to map the MCC, MNC, and MVNO information to a particular\n carrier.\n\n2. Merge the configurations into a single file.\n\n3. (Optional) Inherit data from MNOs. MVNOs inherit configurations from\n MNOs in the legacy `carrier_config_mccmnc.xml` file. Because carrier IDs\n allow all carriers including MVNOs to have a dedicated config file, it's\n recommended to include MNO data during migration.\n\n4. If the configuration for an MVNO carrier ID doesn't exist, fetch the\n configuration from its MNO carrier ID using\n [`getCarrierIdFromSimMccMnc`](https://developer.android.com/reference/android/telephony/TelephonyManager#getCarrierIdFromSimMccMnc()).\n\n5. Rename the new file as\n `carrier_config_carrierid_`\u003cvar translate=\"no\"\u003ecarrierid\u003c/var\u003e`_`\u003cvar translate=\"no\"\u003ecarriername\u003c/var\u003e`.xml`\n where \u003cvar translate=\"no\"\u003ecarrierid\u003c/var\u003e must correspond to a `canonical_id` and\n \u003cvar translate=\"no\"\u003ecarriername\u003c/var\u003e should correspond to a `carrier_name` in\n [`carrier_list.textpb`](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android16-release/assets/latest_carrier_id/carrier_list.textpb)\n\n| **Note:** If a `carrier_config_mccmnc` file doesn't have a matching carrier ID, submit a request to add a carrier ID by following the steps in [Adding carrier ID information to the database](#adding_carrier_id_information_to_the_database)."]]