W Androidzie 10 usługa sugestii kont telefonicznych umożliwia użytkownikom wyświetlanie sugestii dotyczących kont telefonicznych podczas nawiązywania połączeń. Na przykład w przypadku użytkowników z urządzeniem z wieloma kartami SIM i niższymi stawkami za połączenia w ramach sieci usługa najpierw identyfikuje operatora osoby, do której kierowane jest połączenie, a potem sugeruje użycie karty SIM w ramach tej samej sieci.
Usługa sugestii kont telefonicznych jest opcjonalna i może być implementowana na urządzeniach z Androidem w wersji 10 lub nowszej.
Implementacja
Aby wdrożyć sugestie dotyczące kont telefonów, w aplikacji znajdującej się w /system/priv-app/
wdrożyć jeden
PhoneAccountSuggestionService
usługę. Usługa nie jest wywoływana, jeśli zaimplementowano więcej niż 1 element PhoneAccountSuggestionService
. Usługa musi zadeklarować uprawnienie android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
.
Gdy użytkownik nawiązuje połączenie wychodzące, a ani domyślne konto telefonu do połączeń wychodzących ani preferowane konto telefonu nie są ustawione dla osoby, do której jest kierowane połączenie, usługa telekomunikacyjna łączy się z PhoneAccountSuggestionService
, aby zebrać informacje o kontach, wywołuje się onAccountSuggestionRequest(String number)
, a proces połączenia wychodzącego zostaje zawieszony.
Funkcja PhoneAccountSuggestionService
musi wywołać funkcję suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
, podając numer zwrócony przez funkcję onAccountSuggestionRequest(String number)
.
Po wywołaniu metody suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
usługa telekomunikacyjna zwraca listę sugerowanych kont telefonicznych. Dialer musi wyświetlić listę sugerowanych kont telefonicznych, z których użytkownik może wybrać konto, aby nawiązać połączenie.
PhoneAccountSuggestion
Aby tworzyć sugestie, użyj klasy PhoneAccountSuggestion.
Jeśli np. usługa określi, że osoba, do której należy numer, korzysta z tej samej sieci komórkowej co jedna z kart SIM na urządzeniu, usługa powinna oznaczyć konto telefonu jako REASON_INTRA_CARRIER
.
Te informacje mogą być następnie przekazywane użytkownikowi w dialerze.
Na przykład w sytuacji, gdy użytkownik skonfigurował urządzenie do używania karty SIM służbowej dla wszystkich kontaktów na koncie Google służbowym, usługa powinna oznaczyć konto telefonu za pomocą REASON_USER_SET
i ustawić shouldAutoSelect
na wartość „prawda”, aby umożliwić dialerowi pominięcie okna wyboru i automatyczne nawiązanie połączenia za pomocą konta telefonu.
Informacje o innych sugestiach znajdziesz w sekcji PhoneAccountSuggestion
.
Dialer
Gdy połączenie przechodzi w stan
STATE_SELECT_PHONE_ACCOUNT
, wybierarka musi używać informacji z PhoneAccountSuggestion
do obsługi
EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Wyłączanie usługi
Aby dostosować implementację pod kątem konkretnych operatoró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 żadne zapytanie.
Implementacja interfejsu systemu
W zależności od implementacji może być konieczna zmiana interfejsu systemu. Aby na przykład umożliwić użytkownikom określenie, że wszystkie połączenia z danym kontaktem mają być wykonywane z konkretnego konta telefonu, musisz wdrożyć niestandardowy proces konfiguracji i interfejs ustawień dla urządzenia.
Weryfikacja
Aby zweryfikować implementację, uruchom te testy CTS: