2011-12-13 56 views
1

使用ICS,我們已經看到了人員應用程序的一個很酷的API(以前的聯繫人)。這使您可以創建「組」併爲其添加聯繫人。使用ICS(冰淇淋三明治)中的應用程序的「組」功能

有已更新演示:SampleSyncAdapter:http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

,並且工作得很好。聯繫人是通過web服務創建的,並添加到ICS的聯繫人中。

不幸的是,因爲我想更進一步並使用這些組,所以Sample項目有很多代碼和XML文件,我找不到特定於ICS的部分。

我使用這個演示:https://github.com/c99koder/AndroidSyncProviderDemo,添加一個名爲「Elmer Fudd」的聯繫人,寫得很好。

不幸的是,我不知道如何使這個項目適應ICS「羣體」。

這裏是我們如何添加聯繫人的一個片段:

private static void addContact(Account account, String name, String username) { 
    Log.i(TAG, "Adding contact: " + name); 
    ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); 

    ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); 
    builder.withValue(RawContacts.ACCOUNT_NAME, account.name); 
    builder.withValue(RawContacts.ACCOUNT_TYPE, account.type); 
    builder.withValue(RawContacts.SYNC1, username); 
    operationList.add(builder.build()); 

    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
    builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0); 
    builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 
    builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name); 
    operationList.add(builder.build()); 

    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
    builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
    builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.org.c99.SyncProviderDemo.profile"); 
    builder.withValue(ContactsContract.Data.DATA1, username); 
    builder.withValue(ContactsContract.Data.DATA2, "SyncProviderDemo Profile"); 
    builder.withValue(ContactsContract.Data.DATA3, "View profile"); 
    operationList.add(builder.build()); 

    try { 
     mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

enter image description here

回答

0

會回答自己:-P

builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);  
builder.withValue(GroupMembership.GROUP_ROW_ID, ensureSampleGroupExists(context,account)); 
builder.withValue(GroupMembership.MIMETYPE,GroupMembership.CONTENT_ITEM_TYPE); 
operationList.add(builder.build()); 
相關問題