В 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: