В Android 10 служба предложений телефонных аккаунтов позволяет показывать пользователям предложения телефонных аккаунтов при совершении звонка. Например, для пользователей с устройством с несколькими SIM-картами и более низкими тарифами на внутрисетевые звонки эта служба сначала определяет оператора вызываемого абонента, а затем предлагает использовать SIM-карту в той же сети, что и вызываемый абонент.
Услуга предложения аккаунта телефона является необязательной и может быть реализована на устройствах под управлением 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 . Например, если служба определяет, что вызываемый абонент находится на том же операторе, что и одна из SIM-карт в устройстве, служба должна пометить телефонный аккаунт как REASON_INTRA_CARRIER
. Затем эта информация может быть передана пользователю в номеронабирателе.
Например, в ситуации, когда пользователь настроил устройство на использование рабочей SIM-карты для всех контактов в рабочей учетной записи Google, служба должна пометить учетную запись телефона как REASON_USER_SET
и установить shouldAutoSelect
в значение true, чтобы разрешить номеронабирателю обойти диалоговое окно выбора и автоматически совершить вызов с использованием учетной записи телефона.
Информацию о других предложениях см. в разделе PhoneAccountSuggestion
.
Звонилка
Когда вызов переходит в состояние STATE_SELECT_PHONE_ACCOUNT
, дозвонщик должен использовать информацию из PhoneAccountSuggestion
для обработки EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Отключить услугу
Чтобы настроить реализацию для конкретных операторов, вы можете включить или отключить службу с помощью setComponentEnabledSetting
. Служба не запрашивается, если отключена.
Реализация пользовательского интерфейса системы
В зависимости от вашей реализации могут потребоваться изменения в пользовательском интерфейсе системы. Например, чтобы позволить пользователям указывать, что все вызовы определенному контакту выполняются с определенной учетной записи телефона, необходимо реализовать настраиваемый поток настройки и пользовательский интерфейс настроек для устройства.
Проверка
Для проверки вашей реализации выполните следующие тесты CTS: