2010-05-28 1 views
2

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

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

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

ответ

1

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

+0

Это сработало для меня. В частности, перейдите в «Контакты» -> «Параметры отображения» -> [учетная запись] и установите флажок «Все остальные контакты» – MobileDev852

0

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