Использование функции «группы» приложения люди в ICS (Ice Cream Sandwich) - PullRequest
1 голос
/ 13 декабря 2011

С ICS мы увидели классный API для приложения людей (предыдущий контакт).Это позволяет вам создавать «группы» и добавлять к ним контакт.

Существует обновленная демоверсия: SampleSyncAdapter: http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

, которая работает довольно хорошо.Контакты создаются из веб-сервиса и добавляются в контакты из 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

1 Ответ

0 голосов
/ 13 декабря 2011

Отвечу сам: -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());
...