در اندروید ۱۰، سرویس پیشنهاد حساب کاربری تلفن، امکان نمایش پیشنهادهایی برای حسابهای کاربری تلفن را هنگام برقراری تماس به کاربران میدهد. به عنوان مثال، برای کاربرانی که دستگاهی با چند سیمکارت و نرخ پایینتر برای تماسهای درون شبکهای دارند، این سرویس ابتدا اپراتور تماسگیرنده را شناسایی میکند و سپس پیشنهاد میدهد که از سیمکارت در همان شبکهای که تماسگیرنده در آن قرار دارد استفاده شود.
سرویس پیشنهاد حساب کاربری تلفنی اختیاری است و میتواند روی دستگاههایی که اندروید ۱۰ یا بالاتر دارند، پیادهسازی شود.
پیادهسازی
برای پیادهسازی پیشنهاد حساب تلفن، یک سرویس 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 علامتگذاری کند. این اطلاعات سپس میتواند در شمارهگیر به کاربر منتقل شود.
برای مثال، در شرایطی که کاربر دستگاه را طوری پیکربندی کرده است که از یک سیمکارت کاری برای همه مخاطبین در یک حساب گوگل کاری استفاده کند، سرویس باید حساب تلفن را با REASON_USER_SET علامتگذاری کند و shouldAutoSelect روی true تنظیم کند تا به شمارهگیر اجازه دهد از کادر انتخاب عبور کند و به طور خودکار با استفاده از حساب تلفن تماس برقرار کند.
برای اطلاعات بیشتر در مورد سایر پیشنهادات، به PhoneAccountSuggestion مراجعه کنید.
شمارهگیر
وقتی تماس وارد وضعیت STATE_SELECT_PHONE_ACCOUNT میشود، شمارهگیر باید از اطلاعات PhoneAccountSuggestion برای مدیریت EXTRA_SUGGESTED_PHONE_ACCOUNTS استفاده کند.
سرویس را غیرفعال کنید
برای سفارشیسازی پیادهسازی خود برای حاملهای خاص، میتوانید سرویس را با استفاده از setComponentEnabledSetting فعال یا غیرفعال کنید. در صورت غیرفعال بودن، سرویس مورد پرسش قرار نمیگیرد.
پیادهسازی رابط کاربری سیستم
بسته به پیادهسازی شما، ممکن است تغییراتی در رابط کاربری سیستم لازم باشد. به عنوان مثال، برای اینکه به کاربران اجازه دهید مشخص کنند که همه تماسها با یک مخاطب خاص از یک حساب تلفن خاص انجام میشود، باید یک رابط کاربری تنظیمات و جریان راهاندازی سفارشی برای دستگاه پیادهسازی کنید.
اعتبارسنجی
برای اعتبارسنجی پیادهسازی خود، آزمونهای CTS زیر را اجرا کنید: