Informationen zum Anbieter von Kontaktdaten und zu Affinitäten

Ab Android 10 wird auf Daten zur Kontaktaffinität, die von der Komponente Contacts Provider (die Datenquelle in der Kontakte-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. Bei Android 10 wurden Änderungen im Hinblick auf den Datenzugriff vorgenommen, um den Datenschutz für Nutzer auf allen Android 10-Geräten, auf denen der Kontaktanbieter verwendet wird, 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 keine implizite Kontaktrangfolge. Das von Nutzern gesteuerte Ranking der Kontakte (z. B. gekennzeichnete Kontakte) bleibt jedoch erhalten.

Führen Sie einen der folgenden Schritte aus, um diese Änderungen zu implementieren:

  • Verwenden Sie die neueste Version von Contacts Provider.
  • 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 niedriger wurden Daten zu Kontaktinteraktionen vom Contacts Provider 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. So ist beispielsweise das Ranking der automatischen Vervollständigung nicht so effektiv. Mögliche Auswirkungen auf das API-Verhalten:

  • Der Kontaktanbieter speichert die Einstellungen eines Nutzers oder 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 (je nach betroffener Spalte entweder auf null oder auf 0 gesetzt).
    • Das Ranking in den Abfrage-APIs für die automatische Vervollständigung gibt Ergebnisse zurück, die alphabetisch und niemals nach Affinitätsinformationen sortiert sind.
    • API-Aufrufe für häufige Kontakte (z. B. mit dem Filterstring CONTENT_FREQUENT_URI) geben keine Ergebnisse zurück.

Allgemein gilt: Wenn eines der verworfenen Elemente der Contacts Provider API Zähler verwendet, enthalten diese (bei Verwendung in Android 10) 0 und geben bei der Abfrage 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 dargestellt. 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 überprüfen.

Klasse API-Felder 10 Retouren
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äufigen 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 darauf abzielen, diese Einschränkungen zu umgehen, sind nicht zulässig, unabhängig davon, ob sie in Form neuer APIs oder neuer Felder erfolgen.

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 Anwendungen jedoch nicht mehr unterstützte Funktionen benötigen, sollten Sie sie aktualisieren, um Änderungen auszugleichen. 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. Ändere niemals die Standardeinstellungen und biete Alternativen für die Backdoor an.