Propozycja dotycząca konta telefonu

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: