In Android 10 können Nutzer über den Dienst für Vorschläge für Telefonkonten Vorschläge für Telefonkonten erhalten, wenn sie einen Anruf starten. Bei Nutzern mit einem Gerät mit mehreren SIM-Karten und niedrigeren Tarifen für Anrufe innerhalb des Netzwerks wird beispielsweise zuerst der Mobilfunkanbieter des Angerufenen ermittelt und dann vorgeschlagen, die SIM-Karte im selben Netzwerk wie der Angerufene zu verwenden.
Der Dienst für Vorschläge für Smartphone-Konten ist optional und kann auf Geräten mit Android 10 oder höher implementiert werden.
Implementierung
Wenn Sie Vorschläge für Telefonkonten implementieren möchten, müssen Sie einen
PhoneAccountSuggestionService-Dienst in einer App implementieren, die sich in /system/priv-app/ befindet. Der Dienst wird nicht abgefragt, wenn mehr als ein PhoneAccountSuggestionService implementiert ist. Der Dienst muss die Berechtigung android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE deklarieren.
Wenn ein Nutzer einen ausgehenden Anruf startet und weder das Standardkonto für ausgehende Anrufe noch das bevorzugte Telefonkonto für den Empfänger festgelegt ist, wird der Telekommunikationsdienst an PhoneAccountSuggestionService gebunden, um Informationen zu den Konten zu erfassen. onAccountSuggestionRequest(String number) wird aufgerufen und der Prozess für ausgehende Anrufe wird angehalten.
PhoneAccountSuggestionService muss suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) mit der von onAccountSuggestionRequest(String number) zurückgegebenen Nummer aufrufen.
Wenn suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) aufgerufen wird, gibt der Telekommunikationsdienst eine Liste mit vorgeschlagenen Telefonkonten zurück. Die Wählhilfe muss dann die Liste der vorgeschlagenen Telefonkonten für den Nutzer anzeigen, aus denen er für den Anruf auswählen kann.
PhoneAccountSuggestion
Verwenden Sie die Klasse PhoneAccountSuggestion, um Vorschläge zu machen.
Wenn der Dienst beispielsweise feststellt, dass der Anrufempfänger denselben Mobilfunkanbieter wie eine der SIM-Karten im Gerät hat, sollte der Dienst das Telefonkonto mit REASON_INTRA_CARRIER kennzeichnen.
Diese Informationen können dann im Dialer an den Nutzer weitergegeben werden.
Wenn der Nutzer das Gerät beispielsweise so konfiguriert hat, dass für alle Kontakte in einem Google-Arbeitskonto eine geschäftliche SIM-Karte verwendet wird, sollte der Dienst das Telefonkonto mit REASON_USER_SET kennzeichnen und shouldAutoSelect auf „true“ setzen, damit das Wählfeld den Auswahldialog umgehen und den Anruf automatisch über das Telefonkonto starten kann.
Informationen zu anderen Vorschlägen finden Sie unter PhoneAccountSuggestion.
Telefon
Wenn der Anruf in den Status STATE_SELECT_PHONE_ACCOUNT wechselt, muss der Dialer die Informationen aus PhoneAccountSuggestion verwenden, um EXTRA_SUGGESTED_PHONE_ACCOUNTS zu verarbeiten.
Dienst deaktivieren
Wenn Sie die Implementierung für bestimmte Transportunternehmen anpassen möchten, können Sie den Dienst mit setComponentEnabledSetting aktivieren oder deaktivieren.
Der Dienst wird nicht abgefragt, wenn er deaktiviert ist.
Implementierung der System-UI
Je nach Implementierung sind möglicherweise Änderungen an der System-UI erforderlich. Wenn Sie beispielsweise Nutzern erlauben möchten, festzulegen, dass alle Anrufe an einen bestimmten Kontakt über ein bestimmtes Telefonkonto erfolgen, müssen Sie einen benutzerdefinierten Einrichtungsablauf und eine benutzerdefinierte Einstellungs-UI für das Gerät implementieren.
Validierung
Führen Sie die folgenden CTS-Tests aus, um Ihre Implementierung zu validieren: