از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
پیشنهاد حساب تلفن
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
در اندروید 10، سرویس پیشنهادی حساب تلفن به کاربران اجازه می دهد تا هنگام برقراری تماس، پیشنهادات حساب های تلفن را به کاربران نشان دهند. به عنوان مثال، برای کاربرانی که دستگاهی با سیمکارتهای متعدد و نرخهای کمتر برای تماسهای درون شبکهای دارند، این سرویس ابتدا شرکت مخابراتی تماسگیرنده را شناسایی میکند و سپس استفاده از سیمکارت را در همان شبکهای که تماسگیرنده است، پیشنهاد میکند.
سرویس پیشنهادی حساب تلفن اختیاری است و میتوان آن را روی دستگاههای دارای Android 10 یا بالاتر اجرا کرد.
پیاده سازی
برای اجرای پیشنهادات حساب تلفن، یک سرویس PhoneAccountSuggestionService
را در برنامهای که در /system/priv-app/
قرار دارد، پیادهسازی کنید. اگر بیش از یک PhoneAccountSuggestionService
اجرا شده باشد، این سرویس مورد پرسش قرار نمی گیرد. سرویس باید مجوز android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
را اعلام کند.
هنگامی که کاربر یک تماس خروجی برقرار میکند که نه حساب تلفن خروجی پیشفرض و نه حساب تلفن ترجیحی برای تماسگیرنده تنظیم نشده است، سرویس مخابراتی به PhoneAccountSuggestionService
متصل میشود تا اطلاعات مربوط به حسابها را جمعآوری کند، onAccountSuggestionRequest(String number)
تماس گرفته میشود و فرآیند تماس خروجی به حالت تعلیق در میآید.
PhoneAccountSuggestionService
باید با suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
با شماره ای که توسط onAccountSuggestionRequest(String number)
برگردانده شده است تماس بگیرد.
هنگامی که suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
فراخوانی می شود، سرویس مخابرات لیستی از حساب های تلفن پیشنهادی را برمی گرداند. سپس شماره گیر باید لیستی از حساب های تلفن پیشنهادی را برای کاربر نمایش دهد تا بتواند از بین آنها تماس برقرار کند.
پیشنهاد حساب تلفن
برای ارائه پیشنهادات، از کلاس PhoneAccountSuggestion استفاده کنید. برای مثال، اگر سرویس تشخیص دهد که تماس گیرنده در همان شرکت مخابراتی یکی از سیمکارتهای دستگاه است، سرویس باید حساب تلفن را با REASON_INTRA_CARRIER
علامتگذاری کند. سپس این اطلاعات را می توان در شماره گیر به کاربر منتقل کرد.
به عنوان مثال، در شرایطی که کاربر دستگاه را برای استفاده از سیم کارت کاری برای همه مخاطبین در یک حساب Google کاری پیکربندی کرده است، این سرویس باید حساب تلفن را با REASON_USER_SET
علامت گذاری کند و shouldAutoSelect
روی true تنظیم کند تا به شماره گیر اجازه دهد گفتگوی انتخاب را دور بزند و به طور خودکار با استفاده از حساب تلفن تماس برقرار کند.
برای اطلاعات در مورد سایر پیشنهادات، به PhoneAccountSuggestion
مراجعه کنید.
شماره گیر
وقتی تماس وارد وضعیت STATE_SELECT_PHONE_ACCOUNT
میشود، شمارهگیرنده باید از اطلاعات PhoneAccountSuggestion
برای رسیدگی EXTRA_SUGGESTED_PHONE_ACCOUNTS
استفاده کند.
سرویس را غیرفعال کنید
برای سفارشی کردن پیاده سازی خود برای حامل های خاص، می توانید با استفاده از setComponentEnabledSetting
، سرویس را فعال یا غیرفعال کنید. در صورت غیرفعال بودن سرویس مورد سوال قرار نمی گیرد.
پیاده سازی رابط کاربری سیستم
بسته به اجرای شما، ممکن است تغییراتی در رابط کاربری سیستم مورد نیاز باشد. به عنوان مثال، برای اینکه به کاربران اجازه دهید مشخص کنند که همه تماسها با یک مخاطب خاص از یک حساب تلفن خاص انجام میشود، باید یک UI تنظیمات و جریان تنظیم سفارشی را برای دستگاه اجرا کنید.
اعتبار سنجی
برای تأیید اعتبار پیاده سازی خود، تست های CTS زیر را اجرا کنید:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و 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,["# Phone account suggestion\n\nIn Android 10, the phone account suggestion service\nallows suggestions for phone\naccounts to be shown to users when making a call. For example, for users with a\ndevice with multiple SIMs and lower rates for intra-network calls, this\nservice first identifies the callee's carrier and then suggests using the SIM on\nthe same network as the callee.\n\nThe phone account suggestion service is optional and can be implemented on\ndevices running Android 10 or higher.\n\nImplementation\n--------------\n\nTo implement phone account suggestions, implement *one*\n[`PhoneAccountSuggestionService`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestionService.java)\nservice in an app that is located in `/system/priv-app/`. The service isn't\nqueried if more than one `PhoneAccountSuggestionService`is implemented. The\nservice must declare the\n`android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE` permission.\n\nWhen a user makes an outgoing call where neither the\n[default outgoing phone account](https://developer.android.com/reference/android/telecom/TelecomManager.html#getDefaultOutgoingPhoneAccount(java.lang.String))\nnor the\n[preferred phone account](https://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html#PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME)\nis set for the callee, the telecom service binds to\n`PhoneAccountSuggestionService` to gather information about the accounts,\n[`onAccountSuggestionRequest(String number)`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestionService.java#98)\nis called, and the outgoing call process is suspended.\n\n`PhoneAccountSuggestionService` must call\n[`suggestPhoneAccounts(String number, List\u003cPhoneAccountSuggestion\u003e suggestions)`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestionService.java#110)\nwith the number returned by\n[`onAccountSuggestionRequest(String number)`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestionService.java#98).\n\nWhen\n[`suggestPhoneAccounts(String number, List\u003cPhoneAccountSuggestion\u003e suggestions)`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestionService.java#110)\nis called, the telecom service returns a list of suggested phone accounts. The\ndialer must then display the list of suggested phone accounts for the user to\nchoose from to make the call.\n\n### PhoneAccountSuggestion\n\nTo make suggestions, use the\n[PhoneAccountSuggestion](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java)\nclass.\nFor example, if the service determines the callee is on the same carrier as one\nof the SIMs in the device, the service should mark the phone account with\n[`REASON_INTRA_CARRIER`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java#46).\nThis information can then be conveyed to the user in the dialer.\n\nFor example, in a situation where the user has configured the device to use\na work SIM for all contacts\nin a work Google Account, the service should mark the phone account with\n[`REASON_USER_SET`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java#58)\nand set\n[`shouldAutoSelect`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java#121)\nto true to allow the dialer to bypass the selection dialog and automatically\nplace the call using the phone account.\n\nFor information on other suggestions, see\n[`PhoneAccountSuggestion`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java).\n\n### Dialer\n\nWhen the call enters the\n[`STATE_SELECT_PHONE_ACCOUNT`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/Call.java#84)\nstate, the dialer must use the information from\n[`PhoneAccountSuggestion`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/PhoneAccountSuggestion.java)\nto handle\n[`EXTRA_SUGGESTED_PHONE_ACCOUNTS`](https://android.googlesource.com/platform/frameworks/base/+/android16-release/telecomm/java/android/telecom/Call.java#136).\n\n### Disable the service\n\nTo customize your implementation for specific carriers, you can enable or\ndisable the service using\n[`setComponentEnabledSetting`](https://developer.android.com/reference/android/content/pm/PackageManager.html#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)%60).\nThe service is not queried if disabled.\n\n### System UI implementation\n\nDepending on your implementation, changes to the system UI may be required. For\nexample, to allow users to specify that all calls to a specific contact are\nmade from a specific phone account, you must implement a customized set up flow\nand settings UI for the device.\n\nValidation\n----------\n\nTo validate your implementation, run the following CTS tests:\n\n- [`/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java`](https://android.googlesource.com/platform/cts/+/android16-release/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java)\n- [`/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java`](https://android.googlesource.com/platform/cts/+/android16-release/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java)"]]