Как обновить контактную компанию Android?

Недавно я создал адаптер Sync для своего приложения. Он синхронизирует контакты, которые я получаю через веб-запрос с контактами в телефоне. У меня нет проблем с добавлением контакта, однако я не могу получить контактную информацию, чтобы правильно обновлять информацию, когда контактная информация изменилась. Например, поле «Название компании» на контакте. Вот несколько примеров запросов, которые я пробовал, которые не работали или только частично работали (т. Е. Некоторые контакты обновлены, но не правильно):

ContentValues values = new ContentValues(); values.put(ContactsContract.CommonDataKinds.Organization.COMPANY, "New Company"); context.getContentResolver().update(Uri.parse("content://com.android.contacts/data/"), values, BaseColumns._ID + "=?", new String[] { String.valueOf(id) } ); 

Я также пытался сделать это в пакетном режиме, как это было предложено в документации по Android:

  builder = ContentProviderOperation .newUpdate(ContactsContract.Data.CONTENT_URI); builder.withSelection(BaseColumns._ID + " =?", new String[]{String.valueOf(id)}); builder.withValue( ContactsContract.CommonDataKinds.Organization.COMPANY, "New Company Name!"); operationList.add(builder.build()); 

Я прочитал документацию ContactContracts и изначально следовал этому руководству . Я также проверил в примере AuthenticatorActivity в api безрезультатно. Любая помощь приветствуется.

Проведя исчерпывающее время, пытаясь выяснить правильный запрос, я считаю, что нашел ответ. Похоже, мне нужно было изменить BaseColumns._ID на ContactsContract.Data.CONTACT_ID и для каждого сделанного мной обновления я также должен был предоставить тип mime, и я не видел этого нигде в документации по Android. Большая помощь была найдена в этом отчете: работа с Android-контактами

  String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] orgWhereParams = new String[]{String.valueOf(id), ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; operationList .add(ContentProviderOperation .newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(orgWhere, orgWhereParams) .withValue( ContactsContract.CommonDataKinds.Organization.DATA, guCon.getCompany()).build()); 
Intereting Posts
Как перезапустить функцию onCreate Android RecyclerView.Adapter onCreateViewHolder () работает Как открыть клавиатуру внутри макета в android Отображение мягкой клавиатуры Android, когда поле является .focus () 'd, используя javascript Как получить мое собственное значение атрибута в моем стиле Robolectric + Gradle Fails при инициализации теста Пользовательское изображение вместо логотипа в ActionBar / ActionBarSherlock Преобразование YUV в RGB и отображение с использованием opengl es 2.0 из android ndk с использованием шейдеров Цвет переключателя Android studio: выражения lambda не поддерживаются в -7 (используйте источник 8 или выше для включения лямбда-выражений) Как получить доступ к ресурсу <item> из <string-array> в XML-андроиде? В структуре MVP какой класс отвечает за сохранение элементов списка и как уведомлять об изменении данных в этом Java.util.ConcurrentModificationException при выполнении Parse.initialize (это RecyclerView: Async-загрузка изображений Предупреждение во встроенном веб-просмотре