Intereting Posts

Контакт API хранения контактов как невидимый контакт: как сделать его видимым?

Я пытаюсь добавить контакт в Android с помощью getContentResolver . Сначала я создал ArrayList :

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

Затем заполнил список массивов

 int rawContactInsertIndex = ops.size(); ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME,accountName) .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactInsertIndex) .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name) .build()); 

И, наконец, в блоке try

 getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

Когда я это исключаю, я не получаю никаких ошибок или исключений. Но контакт не отображается в контактах Android. Когда я получаю невидимые контакты, я могу найти этот контакт. Может ли кто-нибудь понять, что происходит не так?

Solutions Collecting From Web of "Контакт API хранения контактов как невидимый контакт: как сделать его видимым?"

  ArrayList<ContentProviderOperation> op_list = new ArrayList<ContentProviderOperation>(); op_list.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) //.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DEFAULT) .build()); // first and last names op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.GIVEN_NAME, name) .withValue(StructuredName.FAMILY_NAME, name) .build()); op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone) .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, Phone.TYPE_MOBILE) .build()); op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Email.DATA, email) .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) .build()); try{ ContentProviderResult[] results = getContentResolver(). applyBatch(ContactsContract.AUTHORITY, op_list); }catch(Exception e){ e.printStackTrace(); } 

Этот код работает!