Contatti Provider e Affinità Informazioni

A partire dal 10 Android, dati i contatti affinità-correlato, gestiti dal contatti Fornitore componente (l'origine dei dati visto in un dispositivo di contatti app), si accede in modo diverso rispetto a Android 9 e abbassare.

Prima di Android 10, le app utilizzavano il provider di contatti per accedere ai dati e trasferirli tra un dispositivo e i servizi online. Android 10 presenta modifiche relative all'accessibilità dei dati per garantire una maggiore privacy dell'utente in tutti i dispositivi Android 10 che utilizzano il provider di contatti. Per uno, il database sottostante non contiene dati di affinità di contatto. Pertanto, le app non possono scrivere o leggere da esso. Le modifiche includono quanto segue:

  • Il provider di contatti non registra i dati relativi all'affinità dei contatti, come il numero di volte in cui un utente è stato contattato, l'ultima volta che è stato contattato, l'app utilizzata, la persona contattata o eventuali dati storici correlati.
  • Il MultiAutoCompleteTextView classe nel Contatti Provider autocomplete API non esegue l'ordinamento di query i risultati dal contatore interazione.
  • Il framework Android non fornisce la classificazione implicita dei contatti. (Tuttavia, controllate dall'utente, contatti espliciti classifica (come ad esempio i contatti stellati) resti).

Per implementare queste modifiche, eseguire una delle seguenti operazioni:

  • Utilizza l'ultimo provider di contatti.
  • Aggiorna la tua versione (se stai usando una versione biforcuta).

Inoltre, aggiornare le applicazioni che si basano sulle caratteristiche Contatti Provider deprecate . Versioni API progettate per essere soluzioni alternative alle funzioni deprecate non sono ammessi.

Per Android 9 e versioni precedenti, i dati di interazione dei contatti dal provider di contatti non sono stati rimossi. Invece, i dati di interazione dei contatti vengono cancellati periodicamente (circa una volta al giorno) per simulare l'equivalente in Android 10. Il provider di contatti memorizza queste informazioni, ma solo temporaneamente.

Modifiche all'API

Si prevede che queste modifiche avranno un grande impatto sulle API. Ad esempio, la classificazione del completamento automatico non funzionerà altrettanto bene. I potenziali impatti sul comportamento dell'API includono quanto segue:

  • L'Contatti Provider non memorizzare le preferenze di un utente, o interazioni con il contatto nei ContactsContract.Contacts colonne della tabella.
  • L'API di completamento automatico non ordinerà i risultati per contatore di interazioni.
  • Il TIMES_CONTACTED / TIMES_USED e LAST_TIME_CONTACTED / LAST_TIME_USED colonne non verranno aggiornati.
    • Questi chiaro (a sia null o impostato a 0, a seconda delle colonne interessate) in caso di aggiornamento ad Android 10.
    • La classificazione nelle API di query di completamento automatico restituisce i risultati ordinati in ordine alfabetico, mai per informazioni di affinità.
    • Chiamate API per frequenti contatti (per esempio, utilizzando la stringa di filtro CONTENT_FREQUENT_URI ) restituire alcun risultato.

In genere, se uno degli elementi API del provider di contatti deprecati utilizza contatori, tali contatori (se utilizzati in Android 10) contengono 0 e restituiscono 0 quando vengono interrogati. Le richieste di aggiornamento dalle API interessate vengono ignorate. Ad esempio, la ContactsContract.DataUsageFeedback di classe è stata sconsigliata, in modo da aggiornare e cancellare le chiamate a questa classe vengono ignorate.

Campi che influiscono sulle API

Questi campi sono cambiati in Android 10:

I campi interessati in Android 10 potrebbero essere presenti in diverse API, come indicato nella tabella seguente. I campi API obsoleti restituiscono i comportamenti elencati. Poiché uno di questi campi deprecati potrebbe essere utilizzato in molte delle tue API, verifica i tuoi casi d'uso.

Classe Campi API 10 ritorni
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Queste colonne contengono sempre 0, indipendentemente da come vengono utilizzate. I tentativi di modificarli vengono ignorati.
Contacts markAsContacted() Nessuna operazione.
ContactsContract.DataUsageFeedback

update
delete

Nessuna operazione.
ContactsContract.Contacts Strequent (recitato + frequente)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
I ritorni recitato solo contatti. Nessun contatto frequente restituito.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
API di filtro (chiamate anche di completamento automatico)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Risultati non ordinati per affinità. Questi sono ordinati per Michelin e nome.

alternative

Non ci sono alternative ai campi API deprecati. Non sono consentite soluzioni alternative progettate per aggirare queste restrizioni, sotto forma di nuove API o nuovi campi.

Implementazione

Non devi fare nulla per implementare queste modifiche. Fanno parte dell'iniziativa per aumentare la privacy degli utenti sulla piattaforma del sistema operativo Android. Tuttavia, se le tue app si basano su funzionalità obsolete, potresti voler aggiornare le tue app per compensare eventuali modifiche. Inoltre, se utilizzi una versione biforcuta del provider di contatti, devi aggiornare il provider di contatti.

Nessuna personalizzazione

Non personalizzare o aggirare le modifiche alle informazioni sull'affinità dei contatti. Sono integrati nel framework e apportare modifiche ti porta fuori dalla conformità. Non modificare mai le impostazioni predefinite o fornire alternative backdoor.