С 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](https://i.stack.imgur.com/3v0wq.png)