Проблема добавления контакта с новым API - PullRequest
2 голосов
/ 28 мая 2010

Я пытаюсь добавить новый контакт в свой список контактов с помощью нового API ContactContract через мое приложение. У меня есть следующий метод, основанный на примере диспетчера контактов на Android Android.

    private static void addContactCore(Context context, String accountType, String accountName, String name, String phoneNumber, int phoneType) throws RemoteException, OperationApplicationException {

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    //Add contact type
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
            .build());

    //Add contact name
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, (!name.toLowerCase().equals("unavailable") && !name.equals("")) ? name : phoneNumber)
            .build());

    //Add phone number
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber)
            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType)
            .build());

    //Add contact
    context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}

В одном примере у меня есть текущие значения для параметров. ВидСчета: com.google accountName: (мой адрес электронной почты аккаунта Google) Имя: Mike PHONENUMBER: 5555555555 PHONETYPE: 3

Вызов функции возвращается нормально, без каких-либо исключений, но контакт не найден в диспетчере контактов на моем телефоне. Также на моем телефоне нет контакта с этой информацией. Кто-нибудь знает, что я могу делать неправильно?

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Вам необходимо изменить параметры отображения для отображения контактов, связанных с конкретной учетной записью.

0 голосов
/ 14 января 2011

Возможно, вам также необходимо добавить его в группу «Системная группа: Мои контакты».

...