Informationen zum Anbieter von Kontakten und zu Affinitäten

Ab Android 10 wird auf Daten zur Kontaktaffinität, die von der Komponente Contacts Provider (die Datenquelle in der Kontakt-App eines Geräts) verwaltet werden, anders zugegriffen als unter Android 9 und niedriger.

Vor Android 10 nutzten Apps den Kontaktdatenanbieter, um auf Daten zuzugreifen und sie zwischen einem Gerät und Onlinediensten zu übertragen. Android 10 enthält Änderungen bei der Datenzugänglichkeit, um den Datenschutz auf allen Android 10-Geräten mit dem Kontaktdatenanbieter zu verbessern. Zum einen enthält die zugrunde liegende Datenbank keine Daten zu Kontaktaffinitäten. Apps können daher nicht darauf schreiben oder daraus lesen. Zu den Änderungen gehören:

  • Der Anbieter von Kontaktdaten erfasst keine Daten zur Affinität von Kontakten, z. B. wie oft ein Nutzer kontaktiert wurde, wann der letzte Kontakt stattfand, die verwendete App, die kontaktierte Person oder zugehörige Verlaufsdaten.
  • Die Klasse MultiAutoCompleteTextView in der Autocomplete API des Kontaktdatenanbieters sortiert die Abfrageergebnisse nicht nach dem Interaktionszähler.
  • Das Android-Framework bietet kein implizites Ranking von Kontakten. Die nutzergesteuerte explizite Kontaktrangfolge (z. B. markierte Kontakte) bleibt jedoch erhalten.

So implementieren Sie diese Änderungen:

  • Verwenden Sie den neuesten Anbieter für Kontakte.
  • Aktualisieren Sie Ihre Version, falls Sie eine gegabelte Version verwenden.

Aktualisieren Sie außerdem alle Apps, die auf den veralteten Funktionen des Kontaktdatenanbieters basieren. API-Versionen, die als Umgehung für die eingestellten Funktionen dienen, sind nicht zulässig.

Unter Android 9 und niedrigeren Versionen werden Daten zu Kontaktinteraktionen vom Kontaktdatenanbieter nicht entfernt. Stattdessen werden Daten zu Kontaktinteraktionen regelmäßig (etwa einmal täglich) gelöscht, um das Äquivalent in Android 10 zu simulieren. Der Kontaktdatenanbieter speichert diese Informationen, aber nur vorübergehend.

API-Änderungen

Diese Änderungen werden voraussichtlich große Auswirkungen auf APIs haben. Das Ranking für die automatische Vervollständigung funktioniert beispielsweise nicht mehr so gut. Mögliche Auswirkungen auf das API-Verhalten:

  • Der Kontaktdatenanbieter speichert die Einstellungen eines Nutzers für den Kontakt oder seine Interaktionen mit dem Kontakt nicht in den Tabellenspalten ContactsContract.Contacts.
  • Die Autocomplete API sortiert die Ergebnisse nicht nach dem Interaktionszähler.
  • Die Spalten TIMES_CONTACTED / TIMES_USED und LAST_TIME_CONTACTED / LAST_TIME_USED werden nicht aktualisiert.
    • Diese werden beim Upgrade auf Android 10 gelöscht (entweder auf null oder auf 0 gesetzt, je nach den betroffenen Spalten).
    • Bei der Sortierung in den APIs für Autocomplete-Abfragen werden die Ergebnisse alphabetisch sortiert, niemals nach Affinitätsinformationen.
    • API-Aufrufe für häufig kontaktierte Personen (z. B. mit dem Filterstring CONTENT_FREQUENT_URI) geben keine Ergebnisse zurück.

Wenn für eines der eingestellten Elemente der Contacts Provider API Zähler verwendet werden, enthalten diese Zähler in Android 10 in der Regel den Wert 0 und geben bei einer Abfrage den Wert 0 zurück. Aktualisierungsanfragen von betroffenen APIs werden ignoriert. Die Klasse ContactsContract.DataUsageFeedback wurde beispielsweise eingestellt. Aufrufe zum Aktualisieren und Löschen dieser Klasse werden daher ignoriert.

Felder, die sich auf APIs auswirken

Diese Felder wurden in Android 10 geändert:

Die betroffenen Felder in Android 10 können in verschiedenen APIs vorhanden sein, wie in der folgenden Tabelle angegeben. Für verworfene API-Felder wird das in der Liste angegebene Verhalten zurückgegeben. Da eines dieser veralteten Felder in mehreren Ihrer APIs verwendet werden kann, sollten Sie Ihre Anwendungsfälle prüfen.

Klasse API-Felder 10 Rücksendungen
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Diese Spalten enthalten immer den Wert „0“, unabhängig von ihrer Verwendung. Versuche, sie zu ändern, werden ignoriert.
Contacts markAsContacted() Kein Vorgang.
ContactsContract.DataUsageFeedback

update
delete

Kein Vorgang.
ContactsContract.Contacts Häufig (markiert + häufig)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Es werden nur markierte Kontakte zurückgegeben. Es wurden keine häufig verwendeten Kontakte zurückgegeben.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
Filter-APIs (auch Autocomplete-APIs genannt)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Ergebnisse werden nicht nach Affinität sortiert. Sie werden nach markiert und Name sortiert.

Alternativen

Es gibt keine Alternativen zu den eingestellten API-Feldern. Umgehungen, die diese Einschränkungen umgehen sollen, z. B. in Form neuer APIs oder neuer Felder, sind nicht zulässig.

Implementierung

Sie müssen nichts unternehmen, um diese Änderungen zu implementieren. Sie sind Teil der Initiative zur Verbesserung des Datenschutzes für Nutzer auf der Android-Betriebssystemplattform. Wenn Ihre Apps jedoch auf eingestellte Funktionen angewiesen sind, sollten Sie sie aktualisieren, um mögliche Änderungen zu kompensieren. Wenn Sie eine abgezweigte Version des Kontaktdatenanbieters verwenden, müssen Sie ihn ebenfalls aktualisieren.

Keine Anpassung

Passen Sie die Änderungen an den Informationen zur Kundenaffinität nicht an und umgehen Sie sie nicht. Sie sind in das Framework eingebunden und Änderungen führen zu Verstößen gegen die Compliance. Ändern Sie niemals die Standardeinstellungen und stellen Sie keine Backdoor-Alternativen bereit.