2013-04-24 2 views
0

я могу обновить номер телефона, как это:Почему я не могу удалить этот контакт в Андроиде

ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
     .withSelection("_id =?", new String[] { id }) 
     .withValue(Phone.NUMBER, "5555555555").build()); 

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

Но где я обновляю DisplayName, она does't работы:

ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
     .withSelection("_id=?", new String[] { id }) 
     .withValue("display_name", "jack").build()); 

Это ни слова:

context.getContentResolver().update(
       ContactsContract.Data.CONTENT_URI, 
       values, 
       ContactsContract.CommonDataKinds.StructuredName._ID + "=" 
         + id 
         + " and mimetype='vnd.android.cursor.item/name'", 
       null); 
+0

Вы пробовали CommonDataKinds.StructuredName.DISPLAY_NAME вместо "display_name", –

+0

CommonDataKinds.StructuredName.DISPLAY_NAME и Phone.NUMBER оба являются "data1", поэтому как отличить? – user1502241

ответ

2

display_name только для чтения.

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

И CommonDataKinds.StructuredName.DISPLAY_NAME, и CommonDataKinds.Phone.NUMBER установлены в data1, потому что на самом деле они не относятся к отдельным таблицам. Вместо этого они оба ссылаются на столбец DATA1 в ContactContracts.Data. Все подробные данные для контактов хранятся в ContactContracts.Data, независимо от того, что это такое. Например, все телефонные номера и все адреса электронной почты для контакта хранятся в ContactContracts.Data. То, как вы указываете один тип строки из другого, - это значение MIMETYPE строки. В документации подробно объясняется это.

Еще один совет: вы должны избегать внесения дополнений, удалений или обновлений поставщику контактов в свой собственный код. Вместо этого отправьте намерение, которое запускает приложение контактов устройства или позволяет пользователю выбрать приложение для контактов. Это позволяет пользователю выполнять работу в приложении контактов, а не в приложении. Это также описано в документации.

Смежные вопросы