Поле STARRED
является частью таблицы Contacts
, а не таблиц Data
not Phone
.Вы можете получить доступ к Phone.STARRED, поскольку все запросы в таблицах данных поддерживают неявные объединения с некоторыми полями из таблицы контактов, включая STARRED.
Это правильный код:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
contentValues = new ContentValues();
contentValues.put(Contacts.STARRED, 1);
getActivity().getContentResolver().update(Contacts.CONTENT_URI,
contentValues,
Phone.DISPLAY_NAME+ " = 'Joe Luis'", null);
};
Однако, пожалуйста,обратите внимание, что изменение контактов на основе неуникальных элементов, таких как отображаемое имя, является очень плохой практикой, поскольку у вас может быть более одного контакта с одинаковым именем на устройстве или вы можете очистить DISPLAY_NAME, которые действительно повредят многие контакты.
Вместо этого вы всегда должны использовать уникальное поле - Contacts._ID - для выбора обновлений, например:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
long contactId = getContactIdFromPosition(position); // you need to implement this!
contentValues = new ContentValues();
contentValues.put(Contacts.STARRED, 1);
getActivity().getContentResolver().update(Contacts.CONTENT_URI,
contentValues, Contacts._ID + "=" + contactId, null);
};