Предложение учетной записи телефона

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