W systemie Android 10 usługa sugestii dotyczących kont telefonicznych umożliwia wyświetlanie użytkownikom sugestii dotyczących kont telefonicznych podczas wykonywania połączenia. Na przykład w przypadku użytkowników posiadających urządzenie z wieloma kartami SIM i niższymi stawkami za połączenia wewnątrzsieciowe ta usługa najpierw identyfikuje operatora odbiorcy, a następnie sugeruje korzystanie z karty SIM w tej samej sieci co odbiorca.
Usługa sugerowania konta telefonicznego jest opcjonalna i można ją wdrożyć na urządzeniach z systemem Android 10 lub nowszym.
Realizacja
Aby zaimplementować sugestie dotyczące kont telefonicznych, zaimplementuj jedną usługę PhoneAccountSuggestionService
w aplikacji znajdującej się w /system/priv-app/
. Do usługi nie jest wysyłane zapytanie, jeśli zaimplementowano więcej niż jedną PhoneAccountSuggestionService
. Usługa musi zadeklarować uprawnienie android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
.
Gdy użytkownik wykonuje połączenie wychodzące, gdy dla odbiorcy nie jest ustawione ani domyślne konto telefonu wychodzącego , ani preferowane konto telefonu , usługa telekomunikacyjna łączy się z PhoneAccountSuggestionService
w celu zebrania informacji o kontach, wywoływana jest funkcja onAccountSuggestionRequest(String number)
i połączenie wychodzące proces zostaje zawieszony.
PhoneAccountSuggestionService
musi wywołać suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
z numerem zwróconym przez onAccountSuggestionRequest(String number)
.
Po wywołaniu suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
usługa telekomunikacyjna zwraca listę sugerowanych kont telefonicznych. Dialer musi wówczas wyświetlić listę sugerowanych kont telefonicznych, z których użytkownik będzie mógł wybrać, aby wykonać połączenie.
Sugestia dotycząca konta telefonicznego
Aby zgłaszać sugestie, użyj klasy PhoneAccountSuggestion . Na przykład, jeśli usługa ustali, że odbiorca korzysta z tego samego operatora, co jedna z kart SIM w urządzeniu, powinna oznaczyć konto telefoniczne jako REASON_INTRA_CARRIER
. Informacja ta może być następnie przekazana użytkownikowi w dialerze.
Przykładowo, w sytuacji, gdy użytkownik skonfigurował urządzenie tak, aby korzystało z służbowej karty SIM dla wszystkich kontaktów na służbowym koncie Google, usługa powinna oznaczyć konto telefonu wartością REASON_USER_SET
i ustawić shouldAutoSelect
na wartość true, aby dialer mógł ominąć okno wyboru i automatycznie nawiąż połączenie za pomocą konta telefonu.
Aby uzyskać informacje na temat innych sugestii, zobacz PhoneAccountSuggestion
.
Dialer
Kiedy połączenie przejdzie do stanu STATE_SELECT_PHONE_ACCOUNT
, dialer musi użyć informacji z PhoneAccountSuggestion
, aby obsłużyć EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Wyłączenie usługi
Aby dostosować implementację do konkretnych operatorów, możesz włączyć lub wyłączyć usługę za pomocą setComponentEnabledSetting
. Usługa nie jest pytana, jeśli jest wyłączona.
Implementacja interfejsu użytkownika systemu
W zależności od implementacji mogą być wymagane zmiany w interfejsie użytkownika systemu. Na przykład, aby umożliwić użytkownikom określenie, że wszystkie połączenia z określonym kontaktem będą wykonywane z określonego konta telefonicznego, należy zaimplementować dostosowany interfejs użytkownika dotyczący konfiguracji i ustawień urządzenia.
Walidacja
Aby sprawdzić poprawność implementacji, uruchom następujące testy CTS:
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java