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żytkownika urządzenia z kilkoma kartami SIM i niższymi stawkami za połączenia w sieci ta usługa najpierw identyfikuje operatora odbiorcy, a następnie sugeruje użycie karty SIM w tej samej sieci co osoba dzwoniąca.
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 konta telefonicznego, zaimplementuj 1 usługę PhoneAccountSuggestionService
w aplikacji, która znajduje się w regionie /system/priv-app/
. 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, gdy dla rozmówcy nie jest ustawione domyślne konto wychodzące ani preferowane konto telefoniczne, usługa telekomunikacyjna łączy się z PhoneAccountSuggestionService
, aby zebrać informacje o kontach,
onAccountSuggestionRequest(String number)
, a proces połączeń wychodzących 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 kierowane jest połączenie, korzysta z tej samej sieci komórkowej co jedna z kart SIM w urządzeniu, usługa powinna oznaczyć konto telefonu jako REASON_INTRA_CARRIER
.
Te informacje można następnie przekazać użytkownikowi w telefonie.
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łączać i wyłączać usługę za pomocą narzędzia 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 konieczne mogą być zmiany w interfejsie systemu. Aby na przykład umożliwić użytkownikom określenie, że wszystkie połączenia z danym kontaktem mają być wykonywane z określonego konta telefonu, musisz wdrożyć niestandardowy proces konfiguracji i interfejs ustawień dla urządzenia.
Weryfikacja
Aby zweryfikować implementację, uruchom te testy CTS:
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java