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 berechtigungsfreie Alternative zur umfassenden Berechtigung READ_CONTACTS.
Mithilfe 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:
- App mit Auswahl-UI:Diese Komponente dient als nutzerorientierte Oberfläche für die Auswahl von Kontakten.
- Sitzungsanbieter:Diese Komponente fungiert als Backend-Dienst, der die temporäre Zugriffssitzung verwaltet.

Abbildung 1. Sequenzdiagramm
Benutzeroberfläche der Auswahl
Die Picker-Benutzeroberfläche übernimmt die Benutzeroberfläche für die Auswahl von Kontakten und fragt den Kontakteanbieter 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 doppelte Einträge werden entfernt.
- Kontaktavatare:In der Benutzeroberfläche werden Kontaktfotos oder ‑avatare angezeigt.
- Favoriten:Oben in der Kontaktliste wird die Kategorie „Favoriten“ angezeigt.
- Profilauswahl:Mit dieser Funktion können Nutzer Kontakte aus verschiedenen Nutzerprofilen auswählen (z. B. „Arbeit“ oder „Privat“).
- Einfach- und Mehrfachauswahl:Das System unterstützt sowohl den Einfach- als auch den Mehrfachauswahlmodus. Das Standardlimit liegt bei 50 und das Maximum bei 100.
- Vorschau der Auswahl:Nutzer können sich eine Vorschau der ausgewählten Kontakte ansehen und diese verwalten, bevor sie die Auswahl bestätigen.
- Schnelles Scrollen:Mit dieser Funktion können Sie schnell durch die Kontaktliste navigieren.
- Suchen:Über die Suchleiste können Sie nach bestimmten Kontakten suchen.
- Datenschutzbanner und Datenschutz-Detailseite:Ein obligatorischer Hinweis informiert Nutzer darüber, welche Datenfelder (z. B. Telefonnummern, E‑Mail-Adressen) von der App angefordert werden.
Sitzungsanbieter
Der Sitzungsanbieter (packages/providers/ContactsProvider) fungiert als sicherer Vermittler zwischen der Client-App und dem Kontakteanbieter.
- Rolle:Verwenden Sie den Sitzungsanbieter nur, wenn Sie die Auswahl mit
Intent.ACTION_PICK_CONTACTSstarten. - Sitzungsverwaltung:Wenn ein Nutzer Kontakte auswählt, schreibt die Picker-Benutzeroberfläche 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 für die Auswahl zurück. Die Auswahl bietet geeignete Leseflags, bevor der URI an die Client-App zurückgegeben wird. Dieser URI gewährt temporären, detaillierten Lesezugriff auf die spezifischen Datenfelder, die der Nutzer ausgewählt hat, ohne alle Daten des Kontakts preiszugeben. - Privilegierter Zugriff:Die
android.permission.MANAGE_CONTACTS_PICKER_SESSION-Signatur und die privilegierten Berechtigungen schützen den Schreibzugriff auf den Sitzungsanbieter. So kann nur die vertrauenswürdige Systemauswahl Sitzungen erstellen.
Integration
Hardwarehersteller und Partner müssen die Android-Kontaktauswahl in Builds mit Android 17 und höher einbinden.
Unterstützte Intents
Intent.ACTION_PICK_CONTACTS: Die empfohlene Intention für Apps, die auf Android 17 und höher ausgerichtet sind.Intent.ACTION_PICK: Wird für die Abwärtskompatibilität beibehalten. Das System leitet diese Anfragen automatisch an die neue Auswahl für unterstützte MIME-Typen (E‑Mail, Telefon oder Kontakt) weiter.
Sitzungsverwaltung
Um die Geräteleistung und den Datenschutz zu gewährleisten, wendet der Sitzungsanbieter eine strenge Richtlinie zum Bereinigen von Daten an:
- 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 „Android Contact Picker“ beschränkt ist.
Anpassung und Compliance
Partner können visuelle Elemente wie Schriftarten und Farben anpassen, die Implementierungen müssen jedoch dem Abschnitt 3.18.2 des Android CDD (TBD) entsprechen.
Validierung
Partner müssen ihre Implementierung sowohl mit der Compatibility Test Suite (CTS) als auch mit der Google Mobile-Dienste Test Suite (GTS) überprüfen.