2011-04-22 94 views
13

有没有办法确定哪个联系人发生了变化?Android如何检测哪个联系人发生了变化?

我知道我可以为URI注册一个ContentObserver,但它只会在某些事情发生变化时触发,我该如何知道哪个联系人发生了变化以及该联系人发生了什么变化?有没有办法找出答案?

我的应用程序涉及桌面客户端,我不希望每次连接时都将所有联系人发送到桌面。所以我想跟踪上次连接桌面后发生的变化。

在此先感谢!

p.s.我使用的API级别5+

回答

3

没有就没有办法让这些接触已经从我与这个主题相关的响应变化

Ç& p here

我在我的应用基础验证码类。

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); 

     } 
    } 
} 

至于有关可在投影检查放什么here

希望这有助于

+0

能否请你分享Contact类? – kgandroid 2015-12-16 10:20:16

相关问题