2010-03-22 66 views
1

我讀了 ContactsContract.CommonDataKinds.GroupMembership,但我無法弄清楚用什麼URI插入。如何將聯繫人添加到Android上的某個組?

我準備了這個方法:

public static Uri addToGroup(ContentResolver resolver, long personId, 
      long groupId) { 

     ContentValues values = new ContentValues(); 

     values.put(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID, personId); 

     values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId); 

     return resolver.insert(uri, values);//URI is not known 

    } 

有人能告訴我什麼URI在SDK使用2.0+?

+0

嗨pentium, 也許:Contacts.CONTENT_GROUP_URI? – Sephy 2010-03-22 11:04:34

+0

這是SDK 1.6我需要SDK 2.0 – Pentium10 2010-03-22 11:11:28

+0

實際上,它仍然存在於ContactsContract.Contacts.CONTENT_URI_GROUP爲2.0+,你可以在這裏看到:http://developer.android.com/reference/android/provider/ContactsContract.Contacts。 html#CONTENT_GROUP_URI 它似乎不被棄用或任何東西...或者我不明白你的問題... – Sephy 2010-03-22 11:20:07

回答

5

我找到了解決,我張貼在這裏:

public Uri addToGroup(long personId, long groupId) { 

    //remove if exists 
    this.removeFromGroup(personId, groupId); 

    ContentValues values = new ContentValues(); 
    values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, 
      personId); 
    values.put(
      ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 
      groupId); 
    values 
      .put(
        ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE, 
        ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE); 

    return this.ctx.getContentResolver().insert(
      ContactsContract.Data.CONTENT_URI, values); 

} 

但我不明白的東西,爲什麼我不得不使用RAW_CONTACT_ID,而不是CONTACT_ID,後來引發NullPointerException異常。

+3

這是因爲contact_id是由1個原始聯繫人組成的「虛擬聯繫人」 - 例如,您的Facebook帳戶中的聯繫人與您的Google聯繫人列表中的聯繫人合併,並與您的Twitter帳戶中的聯繫人合併。 ..他們都映射到相同的聯繫人ID,但是是單獨的原始聯繫人。 – callingshotgun 2011-02-09 17:04:24

相關問題