Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Informationen zu Kontaktanbietern und Affinitäten

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

Vor Android 10 verwendeten Apps den Kontaktanbieter, um auf Daten zuzugreifen und diese zwischen einem Gerät und Onlinediensten zu übertragen. Android 10 bietet Änderungen hinsichtlich der Datenzugriffsmöglichkeiten, um die Privatsphäre der Benutzer auf allen Android 10-Geräten zu gewährleisten, die den Kontaktanbieter verwenden. Zum einen enthält die zugrunde liegende Datenbank keine Kontaktaffinitätsdaten. Daher können Apps nicht darauf schreiben oder daraus lesen. Zu den Änderungen gehören:

  • Der Kontaktanbieter zeichnet keine Daten zur Kontaktaffinität auf, z. B. die Häufigkeit der Kontaktaufnahme eines Benutzers, das letzte Mal des Kontakts, die verwendete App, die kontaktierte Person oder verwandte historische Daten.
  • Die MultiAutoCompleteTextView Klasse in der Autocomplete-API des MultiAutoCompleteTextView sortiert die Abfrageergebnisse nicht nach Interaktionszählern.
  • Das Android-Framework bietet kein implizites Kontaktranking. (Das benutzergesteuerte, explizite Kontaktranking (z. B. markierte Kontakte) bleibt jedoch erhalten.)

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

  • Verwenden Sie den neuesten Kontaktanbieter.
  • Aktualisieren Sie Ihre Version (wenn Sie eine gegabelte Version verwenden).

Aktualisieren Sie außerdem alle Apps, die auf den veralteten Funktionen des Kontaktanbieters basieren . API-Versionen, die als Problemumgehung für die veralteten Funktionen konzipiert wurden, sind nicht zulässig.

Für Android 9 und niedriger wurden die Kontaktinteraktionsdaten vom Kontaktanbieter nicht entfernt. Stattdessen werden Kontaktinteraktionsdaten regelmäßig (ungefähr einmal pro Tag) gelöscht, um das Äquivalent in Android 10 zu simulieren. Der Kontaktanbieter speichert diese Informationen, jedoch nur vorübergehend.

API-Änderungen

Diese Änderungen werden voraussichtlich große Auswirkungen auf APIs haben. Zum Beispiel wird das Autocomplete-Ranking nicht so gut funktionieren. Mögliche Auswirkungen auf das API-Verhalten sind:

  • Der Kontaktanbieter speichert die Einstellungen oder Interaktionen eines Benutzers für den Kontakt nicht in den Tabellenspalten von ContactsContract.Contacts .
  • Die Autocomplete-API sortiert die Ergebnisse nicht nach Interaktionszählern.
  • Die TIMES_CONTACTED / TIMES_USED und LAST_TIME_CONTACTED / LAST_TIME_USED werden nicht aktualisiert.
    • Diese werden beim Upgrade auf Android 10 gelöscht (abhängig von den betroffenen Spalten entweder auf null oder auf 0 gesetzt).
    • Das Ranking in den APIs für die automatische Vervollständigung von Abfragen liefert Ergebnisse, die alphabetisch sortiert sind, niemals nach Affinitätsinformationen.
    • API-Aufrufe für häufige Kontakte (z. B. mithilfe der Filterzeichenfolge CONTENT_FREQUENT_URI ) geben keine Ergebnisse zurück.

Wenn eines der veralteten Contact Provider-API-Elemente Zähler verwendet, enthalten diese Zähler (bei Verwendung in Android 10) im Allgemeinen 0 und geben bei Abfrage 0 zurück. Aktualisierungsanforderungen von betroffenen APIs werden ignoriert. Beispielsweise war die ContactsContract.DataUsageFeedback Klasse veraltet, sodass Aufrufe zum Aktualisieren und Löschen dieser Klasse ignoriert werden.

Felder, die sich auf APIs auswirken

Diese Felder haben sich in Android 10 geändert:

Die betroffenen Felder in Android 10 können in verschiedenen APIs vorhanden sein, wie in der folgenden Tabelle angegeben. Veraltete API-Felder geben das aufgelistete Verhalten zurück. Überprüfen Sie Ihre Anwendungsfälle, da eines dieser veralteten Felder möglicherweise in mehreren Ihrer APIs verwendet wird.

Klasse API-Felder 10 kehrt zurück
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Diese Spalten enthalten immer 0, unabhängig davon, wie sie verwendet werden. Versuche, sie zu ändern, werden ignoriert.
Contacts markAsContacted() Keine Operation.
ContactsContract.DataUsageFeedback

update
delete

Keine Operation.
ContactsContract.Contacts Strequent ( mit Sternen + häufig)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Returns spielte Kontakte nur. Es wurden keine häufigen Kontakte zurückgegeben.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
Filter-APIs (auch als Autocomplete bezeichnet)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Ergebnisse nicht nach Affinität sortiert. Diese sind nach Sternchen und Namen sortiert.

Alternativen

Es gibt keine Alternativen zu den veralteten API-Feldern. Problemumgehungen zur Umgehung dieser Einschränkungen, sei es in Form neuer APIs oder neuer Felder, sind nicht zulässig.

Implementierung

Sie müssen nichts tun, um diese Änderungen zu implementieren. Sie sind Teil der Initiative zur Verbesserung der Privatsphäre der Benutzer auf der Android-Plattform. Wenn Ihre Apps jedoch auf veralteten Funktionen basieren, möchten Sie möglicherweise Ihre Apps aktualisieren, um etwaige Änderungen auszugleichen. Wenn Sie eine gespaltene Version des Kontaktanbieters verwenden, müssen Sie außerdem Ihren Kontaktanbieter aktualisieren.

Keine Anpassung

Passen Sie die Änderungen der Kontaktaffinitätsinformationen nicht an oder umgehen Sie sie nicht. Sie sind in das Framework integriert, und wenn Sie Änderungen vornehmen, werden Sie nicht mehr konform. Ändern Sie niemals die Standardeinstellungen und bieten Sie keine Backdoor-Alternativen an.