Informations sur le fournisseur de contacts et les affinités

A partir de 10 applications, les données d'affinité-contacts est associée, géré par le fournisseur de contacts constituant (la source de données observées dans l'application de contacts d'un dispositif), est accessible différemment que dans les applications 9 et inférieure.

Avant Android 10, les applications utilisaient le fournisseur de contacts pour accéder aux données et les transférer entre un appareil et des services en ligne. Android 10 propose des modifications concernant l'accessibilité des données pour garantir une confidentialité accrue des utilisateurs sur tous les appareils Android 10 qui utilisent le fournisseur de contacts. D'une part, la base de données sous-jacente ne contient pas de données d'affinités de contact. Par conséquent, les applications ne peuvent pas écrire ou lire à partir de celui-ci. Les modifications incluent les suivantes :

  • Le fournisseur de contacts n'enregistre pas les données liées à l'affinité des contacts, telles que le nombre de fois qu'un utilisateur a été contacté, la dernière fois qu'il a été contacté, l'application utilisée, la personne contactée ou toute autre donnée historique associée.
  • La MultiAutoCompleteTextView classe dans le fournisseur API Contacts autocomplete ne Regrouper les résultats ne triez pas par contre d'interaction.
  • Le framework Android ne fournit pas de classement implicite des contacts. (Cependant, le classement, les contacts explicites contrôlés par l' utilisateur (comme les contacts étoilés) reste).

Pour mettre en œuvre ces modifications, effectuez l'une des opérations suivantes :

  • Utilisez le dernier fournisseur de contacts.
  • Mettez à jour votre version (si vous utilisez une version forkée).

En outre, mettre à jour les applications basées sur les fonctionnalités du fournisseur de contacts déconseillés . Versions API conçues pour être des solutions de contournement aux fonctions dépréciées ne sont pas autorisés.

Pour Android 9 et versions antérieures, les données d'interaction de contact du fournisseur de contacts n'ont pas été supprimées. Au lieu de cela, les données d'interaction de contact sont effacées périodiquement (environ une fois par jour) pour simuler l'équivalent dans Android 10. Le fournisseur de contacts stocke ces informations, mais seulement temporairement.

Modifications de l'API

Ces changements devraient avoir un impact important sur les API. Par exemple, le classement par saisie semi-automatique ne fonctionnera pas aussi bien. Les impacts potentiels sur le comportement de l'API sont les suivants :

  • Le fournisseur de contacts ne stocke pas les préférences d'un utilisateur pour, ou les interactions avec le contact dans les ContactsContract.Contacts colonnes de table.
  • L'API de saisie semi-automatique ne trie pas les résultats par compteur d'interactions.
  • Le TIMES_CONTACTED / TIMES_USED et LAST_TIME_CONTACTED / LAST_TIME_USED colonnes ne seront pas mis à jour.
    • Ces claires (soit null ou à 0, en fonction des colonnes affectées) lors de la mise à jour Android 10.
    • Le classement dans les API de requête de saisie semi-automatique renvoie les résultats triés par ordre alphabétique, jamais par informations d'affinité.
    • Appels API pour des contacts fréquents (par exemple, en utilisant la chaîne de filtre CONTENT_FREQUENT_URI ) renvoie aucun résultat.

En règle générale, si l'un des éléments obsolètes de l'API Contacts Provider utilise des compteurs, ces compteurs (lorsqu'ils sont utilisés dans Android 10) contiennent 0 et renvoient 0 lorsqu'ils sont interrogés. Les demandes de mise à jour des API concernées sont ignorées. Par exemple, la ContactsContract.DataUsageFeedback classe a été dépréciée, si la mise à jour et supprimer les appels à cette classe sont ignorés.

Champs ayant un impact sur les API

Ces champs ont changé dans Android 10 :

Les champs concernés dans Android 10 peuvent être présents dans différentes API, comme indiqué dans le tableau ci-dessous. Les champs d'API obsolètes renvoient les comportements répertoriés. Étant donné qu'un de ces champs obsolètes peut être utilisé dans plusieurs de vos API, vérifiez vos cas d'utilisation.

Classer Champs API 10 retours
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Ces colonnes contiennent toujours 0, quelle que soit leur utilisation. Les tentatives de les modifier sont ignorées.
Contacts markAsContacted() Pas d'opération.
ContactsContract.DataUsageFeedback

update
delete

Pas d'opération.
ContactsContract.Contacts Strequent (+ étoilé fréquent)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Retours les contacts suivis uniquement. Aucun contact fréquent n'est revenu.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
Filtrer (également appelé saisie semi-automatique) les API

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Résultats non triés par affinité. Ceux - ci sont classés par nom et étoilé.

Alternatives

Il n'y a pas d'alternative aux champs d'API obsolètes. Les solutions de contournement conçues pour contourner ces restrictions, que ce soit sous la forme de nouvelles API ou de nouveaux champs, ne sont pas autorisées.

Mise en œuvre

Vous n'avez rien à faire pour mettre en œuvre ces changements. Ils font partie de l'initiative visant à accroître la confidentialité des utilisateurs sur la plate-forme Android OS. Toutefois, si vos applications reposent sur des fonctionnalités obsolètes, vous souhaiterez peut-être mettre à jour vos applications pour compenser les modifications. De plus, si vous utilisez une version fork du fournisseur de contacts, vous devez mettre à jour votre fournisseur de contacts.

Aucune personnalisation

Ne personnalisez pas et ne contournez pas les modifications apportées aux informations d'affinité des contacts. Ils sont intégrés au cadre, et toute modification vous fait sortir de la conformité. Ne modifiez jamais les paramètres par défaut et ne fournissez jamais d'alternatives de porte dérobée.