2011-04-22 13 views
13

¿Hay alguna manera de determinar qué contacto cambió?Android ¿Cómo se detecta qué contacto cambió?

Sé que puedo registrar un ContentObserver para el URI pero solo se activa cuando algo cambia, ¿cómo se supone que sé qué contacto cambió y qué cambió para ese contacto? ¿Hay una manera de averiguarlo?

Mi aplicación implica un cliente de escritorio y preferiría no enviar todos los contactos al escritorio cada vez que se conecta. Así que me gustaría hacer un seguimiento de lo que ha cambiado desde la última vez que se conectó el escritorio.

¡Gracias de antemano!

p.s. Estoy usando nivel de API 5+

Respuesta

3

No hay ninguna manera de conseguir que el contacto había cambiado

c & p de mi respuesta relacionada con este tema here

tengo este código en mi base de Aplicación clase.

private ContentObserver contactObserver = new ContactObserver(); 

private class ContactObserver extends ContentObserver { 

    public ContactObserver() { 
     super(null); 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 

     // Since onChange do not sent which user have been changed, you 
     // have to figure out how to match it with your data. 
     // Note: Contact is one of my classes. 
     for (Contact contact : getContacts()) { 
      if (!contact.isLinked()) 
       continue; 

      String selection = ContactsContract.Data._ID + " = ?"; 
      String[] selectionArgs = new String[] { contact.getSystemId() }; 
      String[] projection = new String[] { ContactsContract.Data.DISPLAY_NAME }; 
      Cursor cursor = getContentResolver().query(
        ContactsContract.Contacts.CONTENT_URI, projection, 
        selection, selectionArgs, null); 

      if (!cursor.moveToFirst()) 
       return; 

      String name = cursor.getString(0); 

      if (contact.getUsername().equalsIgnoreCase(name)) 
       continue; 

      contact.setUserName(name); 

     } 
    } 
} 

Respecto de lo que puede poner en jaque la proyección here

Esperanza esto ayuda

+0

Puede por favor compartir la clase de contacto ?? – kgandroid

Cuestiones relacionadas