Contacts Fournisseur et Affinités Informations

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

À partir d'Android 10, les données liées à l'affinité des contacts, gérées par le composant Fournisseur de contacts (la source de données visible dans l'application Contacts d'un appareil), sont accessibles différemment que dans Android 9 et les versions antérieures.

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 ni y écrire ni y lire. Les modifications incluent les éléments suivants :

  • 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 connexe.
  • La classe MultiAutoCompleteTextView de l'API de saisie semi-automatique du fournisseur de contacts ne trie pas les résultats de la requête par compteur d'interaction.
  • Le framework Android ne fournit pas de classement implicite des contacts. (Cependant, le classement explicite des contacts contrôlé par l'utilisateur (tel que les contacts favoris ) demeure).

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 dérivée).

En outre, mettez à jour toutes les applications qui reposent sur les fonctionnalités obsolètes du fournisseur de contacts . Les versions d'API conçues pour contourner les fonctions obsolètes ne sont pas autorisées.

Pour Android 9 et les 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 ou les interactions avec le contact dans les colonnes de la table ContactsContract.Contacts .
  • L'API de saisie semi-automatique ne triera pas les résultats par compteur d'interaction.
  • Les TIMES_CONTACTED / TIMES_USED et LAST_TIME_CONTACTED / LAST_TIME_USED ne seront pas mises à jour.
    • Celles-ci s'effacent (à null ou à 0, selon les colonnes concernées) lors de la mise à niveau vers Android 10.
    • Le classement dans les API de requête de saisie semi-automatique renvoie des résultats triés par ordre alphabétique, jamais par informations d'affinité.
    • Les appels d'API pour les contacts fréquents (par exemple, en utilisant la chaîne de filtre CONTENT_FREQUENT_URI ) ne renvoient aucun résultat.

En règle générale, si l'un des éléments obsolètes de l'API du fournisseur de contacts 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 classe ContactsContract.DataUsageFeedback était obsolète, donc les appels de mise à jour et de suppression à 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é que l'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 modification sont ignorées.
Contacts markAsContacted() Pas d'opération.
ContactsContract.DataUsageFeedback

update
delete

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

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

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

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 modifications. 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 tout changement. De plus, si vous utilisez une version dérivée du fournisseur de contacts, vous devez mettre à jour votre fournisseur de contacts.

Aucune personnalisation

Ne personnalisez pas et ne contournez pas les modifications des informations d'affinité des contacts. Ils sont intégrés au cadre et toute modification vous met hors conformité. Ne modifiez jamais les paramètres par défaut et ne fournissez jamais d'alternatives par porte dérobée.