Не удалось удалить весь контакт с помощью ContentProviderOperation - PullRequest
2 голосов
/ 17 июня 2010

Я работал с контактами Android.Я могу показать их, обновить, но когда я хочу удалить любой, он не удаляется полностью.В приложении Контакты отображается как (Неизвестно) без каких-либо данных.Вот мой пример:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
.withSelection(Data.CONTACT_ID + "=?", new String[]{selectedid})
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

Должен ли я сделать что-нибудь еще, чтобы полностью удалить контакт?Кажется, что этот код удаляет информацию в таблице ContactsContract.Data, но не удаляет элемент, связанный с таблицей ContactsContract.Contacts или ContactsContract.RawContacts.how, как я могу полностью удалить контакт?=======================================================================

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

ContentResolver contentResolver = m_cContent.getContentResolver();
contentResolver.delete(People.CONTENT_URI, People.NAME + "=?", new String[] { SelectedName });

, и если я изменю этот код на

ContentResolver contentResolver = m_cContent.getContentResolver();
contentResolver.delete(ContactsContract.Contacts, ContactsContract.Contacts._ID + "=?", new String[] { Selectedid });

Это не имеет никакого эффекта.

Значит ли это, что можно удалить контакт только по имени, а не по его идентификатору?Что я могу сделать, чтобы удалить контакт?

Спасибо, Enchor

1 Ответ

1 голос
/ 27 мая 2015

Вы пытаетесь удалить контакт , удаляя его строки данных из таблицы Data.Это не сработает.

Контакт состоит из нескольких необработанных контактов, каждый необработанный контакт имеет свои данные, сохраненные в таблице Data.При удалении контакта все необработанные контакты также удаляются вместе с их данными.

Сделайте следующее:

long contactId = 12345;
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId));
int deleted = getContentResolver().delete(contactUri, null, null);

удалено будет 1, если операция прошла успешно.

...