W Androidzie 10 usługa sugestii kont telefonicznych umożliwia wyświetlanie użytkownikom sugestii kont telefonicznych podczas wykonywania połączenia. Na przykład w przypadku użytkowników urządzeń z wieloma kartami SIM i niższymi stawkami za połączenia w sieci ta usługa najpierw identyfikuje operatora rozmówcy, a następnie sugeruje użycie karty SIM w tej samej sieci co rozmówca.
Usługa sugestii konta na telefonie jest opcjonalna i można ją wdrożyć na urządzeniach z Androidem 10 lub nowszym.
Implementacja
Aby wdrożyć sugestie dotyczące konta telefonicznego, zaimplementuj jedną
PhoneAccountSuggestionService
usługę w aplikacji znajdującej się w /system/priv-app/
. Jeśli zaimplementowano więcej niż jeden element PhoneAccountSuggestionService
, usługa nie jest wywoływana. Usługa musi zadeklarować uprawnienie android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
.
Gdy użytkownik wykonuje połączenie wychodzące, w przypadku którego nie jest ustawione ani domyślne konto telefonu do połączeń wychodzących, ani preferowane konto telefonu dla osoby, do której dzwoni, usługa telekomunikacyjna wiąże się z PhoneAccountSuggestionService
, aby zebrać informacje o kontach, wywoływana jest funkcja onAccountSuggestionRequest(String number)
, a proces połączenia wychodzącego zostaje zawieszony.
PhoneAccountSuggestionService
musi wywołać
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
z numerem zwróconym przez
onAccountSuggestionRequest(String number)
.
Gdy wywoływana jest funkcja
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
, usługa telekomunikacyjna zwraca listę sugerowanych kont telefonicznych. Aplikacja do wybierania numerów musi wtedy wyświetlić listę sugerowanych kont telefonicznych, z której użytkownik może wybrać konto do wykonania połączenia.
PhoneAccountSuggestion
Aby tworzyć sugestie, użyj klasy PhoneAccountSuggestion.
Jeśli np. usługa ustali, że odbiorca połączenia korzysta z tego samego operatora co jedna z kart SIM w urządzeniu, powinna oznaczyć konto telefoniczne wartością REASON_INTRA_CARRIER
.
Te informacje mogą być następnie przekazywane użytkownikowi w aplikacji do wybierania numerów.
Jeśli na przykład użytkownik skonfiguruje urządzenie tak, aby używać służbowej karty SIM do wszystkich kontaktów na służbowym koncie Google, usługa powinna oznaczyć konto telefonu symbolem REASON_USER_SET
i ustawić wartość shouldAutoSelect
na „true”, aby umożliwić aplikacji do wybierania numerów pominięcie okna wyboru i automatyczne nawiązanie połączenia przy użyciu konta telefonu.
Informacje o innych sugestiach znajdziesz w sekcji PhoneAccountSuggestion
.
Dialer
Gdy połączenie przejdzie w stan
STATE_SELECT_PHONE_ACCOUNT
, dialer musi użyć informacji z
PhoneAccountSuggestion
do obsługi
EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Wyłączanie usługi
Aby dostosować wdrożenie do konkretnych przewoźników, możesz włączyć lub wyłączyć usługę za pomocą setComponentEnabledSetting
.
Jeśli usługa jest wyłączona, nie jest wysyłane do niej zapytanie.
Implementacja interfejsu systemu
W zależności od implementacji może być konieczne wprowadzenie zmian w interfejsie systemu. Jeśli na przykład chcesz umożliwić użytkownikom określenie, że wszystkie połączenia z konkretnym kontaktem mają być wykonywane z określonego konta telefonicznego, musisz wdrożyć dostosowany proces konfiguracji i interfejs ustawień na urządzeniu.
Weryfikacja
Aby sprawdzić implementację, uruchom te testy CTS: