Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Información de proveedores de contactos y afinidades

A partir de Android 10, se accede a los datos relacionados con la afinidad de contactos, administrados por el componente de proveedor de contactos (la fuente de datos que se ve en la aplicación de contactos de un dispositivo) de manera diferente que en Android 9 y versiones anteriores.

Antes de Android 10, las aplicaciones usaban el proveedor de contactos para acceder a los datos y transferirlos entre un dispositivo y los servicios en línea. Android 10 presenta cambios con respecto a la accesibilidad de datos para garantizar una mayor privacidad del usuario en todos los dispositivos con Android 10 que usan el proveedor de contactos. Por un lado, la base de datos subyacente no contiene datos de afinidades de contacto. Por lo tanto, las aplicaciones no pueden escribir ni leer en él. Los cambios incluyen lo siguiente:

  • El proveedor de contactos no registra datos relacionados con la afinidad de los contactos, como la cantidad de veces que se contactó a un usuario, la última vez que se contactó, la aplicación utilizada, la persona contactada o cualquier dato histórico relacionado.
  • La clase MultiAutoCompleteTextView en la API de autocompletar del proveedor de contactos no ordena los resultados de la consulta por contador de interacción.
  • El marco de Android no proporciona una clasificación de contactos implícita. (Sin embargo, la clasificación de contactos explícita controlada por el usuario (como los contactos destacados ) permanece).

Para implementar estos cambios, realice una de las siguientes acciones:

  • Utilice el proveedor de contactos más reciente.
  • Actualice su versión (si está usando una versión bifurcada).

Además, actualice las aplicaciones que se basan en las funciones obsoletas del proveedor de contactos . No se permiten las versiones de API diseñadas para ser soluciones alternativas a las funciones obsoletas .

Para Android 9 y versiones anteriores, los datos de interacción de contactos del proveedor de contactos no se han eliminado. En cambio, los datos de interacción de contactos se borran periódicamente (aproximadamente una vez al día) para simular el equivalente en Android 10. El proveedor de contactos almacena esta información, pero solo temporalmente.

Cambios de API

Se espera que estos cambios tengan un gran impacto en las API. Por ejemplo, la clasificación de autocompletar no funcionará tan bien. Los impactos potenciales en el comportamiento de la API incluyen los siguientes:

  • El proveedor de contactos no almacenará las preferencias de un usuario ni las interacciones con el contacto en las columnas de la tabla ContactsContract.Contacts .
  • La API de autocompletar no ordenará los resultados por contador de interacciones.
  • Las TIMES_CONTACTED / TIMES_USED y LAST_TIME_CONTACTED / LAST_TIME_USED no se actualizarán.
    • Estos se borran (a null o se establecen en 0, según las columnas afectadas) al actualizar a Android 10.
    • La clasificación en las API de consulta de autocompletar devuelve resultados ordenados alfabéticamente, nunca por información de afinidad.
    • Las llamadas a la API para contactos frecuentes (por ejemplo, utilizando la cadena de filtro CONTENT_FREQUENT_URI ) no devuelven resultados.

En general, si alguno de los elementos obsoletos de la API del proveedor de contactos usa contadores, esos contadores (cuando se usan en Android 10) contienen 0 y devuelven 0 cuando se consultan. Las solicitudes de actualización de las API afectadas se ignoran. Por ejemplo, la clase ContactsContract.DataUsageFeedback quedó en desuso, por lo que se ignoran las llamadas de actualización y eliminación a esta clase.

Campos que afectan a las API

Estos campos han cambiado en Android 10:

Los campos afectados en Android 10 pueden estar presentes en diferentes API, como se indica en la siguiente tabla. Los campos de API obsoletos devuelven los comportamientos enumerados. Debido a que uno de estos campos obsoletos se puede usar en varias de sus API, verifique sus casos de uso.

Clase Campos de API 10 vueltas
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Estas columnas siempre contienen 0, independientemente de cómo se utilicen. Se ignoran los intentos de modificarlos.
Contacts markAsContacted() No operacion.
ContactsContract.DataUsageFeedback

update
delete

No operacion.
ContactsContract.Contacts Strequent ( destacado + frecuente)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Devuelve solo los contactos destacados . No regresó ningún contacto frecuente.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
API de filtro (también llamadas autocompletar)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Resultados no ordenados por afinidad. Estos están ordenados por estrellas y por nombre .

Alternativas

No hay alternativas a los campos de API obsoletos. No se permiten soluciones alternativas diseñadas para eludir estas restricciones, ya sea en forma de nuevas API o nuevos campos.

Implementación

No necesita hacer nada para implementar estos cambios. Son parte de la iniciativa para aumentar la privacidad del usuario en la plataforma del sistema operativo Android. Sin embargo, si sus aplicaciones dependen de funciones obsoletas, es posible que desee actualizar sus aplicaciones para compensar cualquier cambio. Además, si usa una versión bifurcada del proveedor de contactos, debe actualizar su proveedor de contactos.

Sin personalización

No personalice ni evite los cambios en la información de afinidad de los contactos. Están integradas en el marco y, al realizar cualquier cambio, incumple el cumplimiento. Nunca modifique la configuración predeterminada ni proporcione alternativas de puerta trasera.