Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Puedes determinar qué cambios de contacto tienen con registerContentObserver?

Sólo tratando de determinar si hay una manera fácil de determinar qué cambios de contacto cuando se utiliza registerContentObserver, o algún otro método? Puedo decir cuando la base de datos cambia, pero no estoy seguro de que quiero comprobar todos los registros cada vez que ocurre una actualización / cambio.

Básicamente si tengo una lista de contactos, y uno se actualiza a través de método manual (es decir, cambio de número de teléfono para un contacto o agregar un nuevo contacto), o automática (por ejemplo, ActiveSync foto se agrega, cambió). Quiero ser capaz de A) Saber que algo cambió, y B) Saber qué contacto había cambiado algunos datos.

Estoy tratando de buscar a ciertos usuarios en los que pueda ser capaz de hacer coincidir sus fotos de un servicio remoto. Si se agrega más información a una cuenta de usuario, quiero poder examinarla para ver si proporciona una coincidencia. No quiero programarlo, sin embargo, me gustaría hacerlo después de una actualización sucede.

Chris.

  • ¿Cómo hago que mi Android ContentObserver para ContactsContract detecte un contacto añadido, actualizado o eliminado?
  • El método onChange de Content Observer se disparó varias veces
  • Android: detecta SMS saliente, cuenta incorrecta
  • Android: ¿Cómo registrar un observador de contenido sin actividad?
  • Android: el método "onChange ()" del observador de contenido se llama varias veces
  • Por qué y cuándo anular el registro de observadores de contenido en android
  • Android notifica cuando se actualiza la guía telefónica (Observador de contenido)
  • ContentObserver para los cambios de contacto de escucha
  • 2 Solutions collect form web for “¿Puedes determinar qué cambios de contacto tienen con registerContentObserver?”

    No estoy seguro de cuál Uri estás registrando actualmente para las actualizaciones, pero cuando registres tu ContentObserver , ¿no puedes registrar un Uri individual que apunte directamente al contacto que te interesa? Entonces su observador sólo será notificado cuando su contacto interesante se modifica. La sección en el título de la documentación del SDK "URI de búsqueda" habla más sobre esto:

    http://developer.android.com/resources/articles/contacts.html

    La clave de búsqueda es única para cada registro (fila), así que me imagino hacer algo como esto es lo que buscas?

     Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); getContentResolver().registerContentObserver(lookupUri, false, myObserver); 

    Y hacer eso para cada contacto individual en su lista.

    Para Contactos Adicionales

    La mejor manera que puedo ver para hacer esto es volver a consultar un cursor a la tabla de contactos cada vez que el ContentObserver cambia (re-consulta es rápido, incluso si lo está haciendo a menudo con muchos datos) y mantener la Valor CONTACT_ID más alto. Cada vez que el cursor contiene un ID más allá de lo que ha almacenado, se acaba de agregar.

    Además, si aún no has visto esta conversación , podría ser una buena lectura. Dianne parece bastante adament que mantener las especificaciones de los cambios de contenido de ContentObserver

    Aclamaciones.

    Puesto que esta pregunta fue contestada, hay un nuevo método de devolución de llamada disponible en la clase ContentObserver que tiene el uri del contenido cambiado: http://developer.android.com/reference/android/database/ContentObserver.html#onChange(boolean , Android.net.Uri)

    Esta opción está disponible a partir de la API de Android Nivel 16

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.