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

در Android 10، سرویس پیشنهاد حساب تلفن به کاربران امکان می‌دهد هنگام برقراری تماس، پیشنهادهایی برای حساب‌های تلفن دریافت کنند. برای مثال، برای کاربرانی که دستگاهی با چند سیم‌کارت دارند و نرخ تماس درون‌شبکه‌ای آن‌ها پایین‌تر است، این سرویس ابتدا شرکت مخابراتی گیرنده را شناسایی می‌کند و سپس پیشنهاد می‌دهد از سیم‌کارتی استفاده کنید که در شبکه گیرنده است.

سرویس پیشنهاد حساب تلفن اختیاری است و می‌تواند در دستگاه‌های دارای Android 10 یا بالاتر پیاده‌سازی شود.

پیاده‌سازی

برای پیاده‌سازی پیشنهادهای حساب تلفن، یک PhoneAccountSuggestionService سرویس را در برنامه‌ای که در /system/priv-app/ قرار دارد پیاده‌سازی کنید. اگر بیش‌از یک PhoneAccountSuggestionService پیاده‌سازی شده باشد، سرویس پُرسمان نمی‌شود. سرویس باید اجازه android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE را اعلام کند.

وقتی کاربر تماسی برقرار می‌کند که نه حساب تلفن خروجی پیش‌فرض و نه حساب تلفن ترجیحی برای تماس‌گیرنده تنظیم نشده است، سرویس مخابراتی به PhoneAccountSuggestionService متصل می‌شود تا اطلاعات حساب‌ها را جمع‌آوری کند، onAccountSuggestionRequest(String number) فراخوانده می‌شود، و فرایند تماس خروجی تعلیق می‌شود.

‫PhoneAccountSuggestionService باید با شماره برگشتی از onAccountSuggestionRequest(String number) با suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) تماس بگیرد.

وقتی suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) فراخوانی می‌شود، سرویس مخابراتی فهرستی از حساب‌های تلفن پیشنهادی را برمی‌گرداند. سپس شماره‌گیر باید فهرست حساب‌های تلفن پیشنهادی را برای کاربر نمایش دهد تا کاربر از بین آن‌ها برای برقراری تماس انتخاب کند.

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

برای ارائه پیشنهاد، از کلاس PhoneAccountSuggestion استفاده کنید. برای مثال، اگر سرویس تشخیص دهد که مخاطب تماس در همان شرکت مخابراتی یکی از سیم‌کارت‌های دستگاه است، سرویس باید حساب تلفن را با REASON_INTRA_CARRIER علامت‌گذاری کند. سپس این اطلاعات می‌تواند در شماره‌گیر به کاربر منتقل شود.

برای مثال، در شرایطی که کاربر دستگاه را پیکربندی کرده است تا از سیم‌کارت کاری برای همه مخاطبین در «حساب Google» کاری استفاده کند، سرویس باید حساب تلفن را با REASON_USER_SET علامت‌گذاری کند و shouldAutoSelect را روی درست تنظیم کند تا شماره‌گیر بتواند از کادر گفتگوی انتخاب عبور کند و به‌طور خودکار بااستفاده از حساب تلفن تماس برقرار کند.

برای اطلاعات درباره پیشنهادهای دیگر، PhoneAccountSuggestion را ببینید.

Dialer

وقتی تماس وارد حالت STATE_SELECT_PHONE_ACCOUNT می‌شود، شماره‌گیر باید از اطلاعات PhoneAccountSuggestion برای مدیریت EXTRA_SUGGESTED_PHONE_ACCOUNTS استفاده کند.

غیرفعال کردن سرویس

برای سفارشی‌سازی کردن پیاده‌سازی برای شرکت‌های مخابراتی خاص، می‌توانید سرویس را بااستفاده از setComponentEnabledSetting فعال یا غیرفعال کنید. اگر غیرفعال باشد، سرویس پُرسمان نمی‌شود.

پیاده‌سازی واسط کاربر سامانه

بسته به پیاده‌سازی شما، ممکن است تغییراتی در واسط کاربر سیستم لازم باشد. برای مثال، برای اینکه به کاربران اجازه دهید مشخص کنند همه تماس‌ها با مخاطب خاصی از حساب تلفن خاصی برقرار شود، باید جریان راه‌اندازی سفارشی و واسط کاربر تنظیمات را برای دستگاه پیاده‌سازی کنید.

اعتبارسنجی

برای اعتبارسنجی پیاده‌سازی‌تان، این آزمایش‌های CTS را اجرا کنید: