در اندروید 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 زیر را اجرا کنید: