پیشنهاد حساب تلفن

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