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 osoby wywoływanej, a następnie sugeruje użycie karty SIM w tej samej sieci co osoba wywoływana.
Usługa sugestii konta w 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ż 1 element PhoneAccountSuggestionService, usługa nie jest wysyłana. 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 odbiorcy, 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ć karty SIM do pracy w przypadku wszystkich kontaktów na koncie Google do pracy, usługa powinna oznaczyć konto telefonu symbolem REASON_USER_SET i ustawić wartość shouldAutoSelect na „true”, aby aplikacja do wybierania numerów mogła pominąć okno wyboru i automatycznie nawiązać połączenie za pomocą 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 elementu
PhoneAccountSuggestion, aby obsłużyć
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 są do niej wysyłane zapytania.
Implementacja interfejsu systemu
W zależności od implementacji może być konieczne wprowadzenie zmian w interfejsie systemu. Aby na przykład umożliwić użytkownikom określenie, że wszystkie połączenia z określonym 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: