Die Android-Kontaktauswahl bietet eine standardmäßige, datenschutzfreundliche Benutzeroberfläche, über die Nutzer bestimmte Kontakte für Apps freigeben können.
Diese Funktion wurde in Android 17 eingeführt und dient als Alternative zur umfassenden Berechtigung READ_CONTACTS, für die keine Berechtigung erforderlich ist.
Mit der Kontaktauswahl können Apps Zugriff auf bestimmte Kontaktdaten wie Telefonnummern oder E-Mail-Adressen anfordern. Der Nutzer wählt die Kontakte aus, die er freigeben möchte, und das System gewährt der App nur für diese Details temporären Lesezugriff.
Architektur
Die Kontaktauswahl besteht aus zwei Hauptkomponenten:
- UI-App für die Auswahl: Diese Komponente dient als Benutzeroberfläche für die Auswahl von Kontakten.
- Sitzungsanbieter: Diese Komponente fungiert als Backend-Dienst, der die temporäre Zugriffssitzung verwaltet.

Abbildung 1 : Sequenzdiagramm
UI für die Auswahl
Die UI für die Auswahl verarbeitet die Benutzeroberfläche für die Kontaktauswahl und fragt den Kontaktdatenanbieter direkt ab, um Ansichten basierend auf den angeforderten Datentypen zu füllen. Unterstützte Ansichten:
- Nur Telefonnummern: In der Benutzeroberfläche werden Kontakte mit Telefonnummern angezeigt.
- Nur E-Mail-Adressen: In der Benutzeroberfläche werden Kontakte mit E-Mail-Adressen angezeigt.
- Benutzerdefinierte Kontaktdaten: In der Benutzeroberfläche werden Kontakte angezeigt, die bestimmten angeforderten Datenfeldern entsprechen.
Außerdem unterstützt die Benutzeroberfläche die folgenden Funktionen:
- Alphabetisch sortierte Liste: Kontakte werden alphabetisch sortiert und dedupliziert.
- Kontaktavatare: In der Benutzeroberfläche werden Kontaktfotos oder Avatare angezeigt.
- Favoriten: Oben in der Kontaktliste wird die Kategorie „Favoriten“ angezeigt.
- Profilwechsler: Mit dieser Funktion können Nutzer Kontakte aus verschiedenen Nutzerprofilen auswählen (z. B. „Arbeit“ und „Privat“).
- Einzel- und Mehrfachauswahl: Das System unterstützt sowohl den Einzel- als auch den Mehrfachauswahlmodus (das Standardlimit ist 50 und das Maximum ist 100).
- Vorschau der Auswahl: Nutzer können sich eine Vorschau der ausgewählten Kontakte ansehen und sie verwalten, bevor sie die Auswahl bestätigen.
- Schnelles Scrollen: Mit dieser Funktion können Nutzer schnell durch die Kontaktliste navigieren.
- Suche: Eine Suchleiste ermöglicht die Suche nach bestimmten Kontakten.
- Datenschutzbanner und Seite mit Datenschutzdetails: Ein obligatorischer Hinweis informiert Nutzer genau darüber, welche Datenfelder (z. B. Telefonnummern, E-Mail-Adressen) die App anfordert.
Sitzungsanbieter
Der Sitzungsanbieter (packages/providers/ContactsProvider) fungiert als sicherer Vermittler zwischen der Client-App und dem Kontaktdatenanbieter.
- Rolle: Verwenden Sie den Sitzungsanbieter nur, wenn Sie die Auswahl mit
Intent.ACTION_PICK_CONTACTSstarten. - Sitzungsverwaltung: Wenn ein Nutzer Kontakte auswählt, schreibt die UI für die Auswahl die Auswahl-Daten (die der UID des Clients zugeordnet sind) in den Sitzungsanbieter.
- Datenzugriff: Der Anbieter gibt einen
content://com.android.providers.contacts.picker.sessions-URI an die Auswahl zurück. Die Auswahl wendet die entsprechenden Leseflags an, bevor der URI an die Client-App zurückgegeben wird. Dieser URI gewährt temporären, detaillierten Lesezugriff auf die vom Nutzer ausgewählten Datenfelder, ohne alle Daten des Kontakts preiszugeben. - Privilegierter Zugriff: Die Signatur
android.permission.MANAGE_CONTACTS_PICKER_SESSIONund die privilegierten Berechtigungen schützen den Schreibzugriff auf den Sitzungsanbieter und sorgen dafür, dass nur die vertrauenswürdige Systemauswahl Sitzungen erstellen kann.
Integration
Hardwarehersteller und Partner müssen die Android-Kontaktauswahl in Builds mit Android 17 und höher einbeziehen.
Unterstützte Intents
Intent.ACTION_PICK_CONTACTS: Das empfohlene Intent für Apps, die auf Android 17 und höher ausgerichtet sind.Intent.ACTION_PICK: Für Abwärtskompatibilität beibehalten. Das System leitet diese Anfragen für unterstützte MIME-Typen (E-Mail, Telefon oder Kontakt) automatisch an die neue Auswahl weiter.
Sitzungsverwaltung
Um die Geräteleistung und den Datenschutz zu gewährleisten, erzwingt der Sitzungsanbieter eine strenge Richtlinie zur Datenbereinigung:
- Bereinigungsjob: Ein Systemjob (
CleanupJobService) wird regelmäßig ausgeführt, um Sitzungsdaten zu entfernen, die älter als 24 Stunden sind. - Zeilenlimit: Um eine übermäßige Speichernutzung zu verhindern, ist die Tabelle des Sitzungsanbieters auf maximal 5.000 Zeilen begrenzt. Wenn die Tabelle diese Größe erreicht, werden die ältesten Zeilen automatisch entfernt, bevor neue Sitzungsdaten eingefügt werden.
- Persistenz: Sitzungsdaten sind temporär. Client-Apps müssen die zurückgegebenen Kontaktdaten sofort nach Erhalt speichern.
Berechtigungen
Für den Schreibzugriff auf den Sitzungsanbieter ist die Berechtigung android.permission.MANAGE_CONTACTS_PICKER_SESSION erforderlich, die auf das Paket der Android-Kontaktauswahl beschränkt ist.
Anpassung und Compliance
Partner können visuelle Elemente wie Schriftarten und Farben anpassen, die Implementierungen müssen jedoch Abschnitt 3.18.2 der Android CDD (System Contacts Picker) entsprechen.
Validierung
Partner müssen ihre Implementierung sowohl mit der Compatibility Test Suite (CTS) als auch mit der Google Mobile Services Test Suite (GTS) überprüfen.