我正在尝试使用内容提供商编辑手机的联系人。要加载我使用下面代码的数据,它工作正常。
private ArrayList<String> getRecords()
{
ArrayList<String> records=new ArrayList<String>();
Cursor cursor=getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);
if (cursor.moveToFirst())
{
String name="";
String phone="";
String id="";
do{
id=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
name =cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phone =cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
name = id+" "+name+"\n"+phone;
records.add(name);
}
while(cursor.moveToNext());
}
return records;
}
现在我想编辑实际上想要更改所选联系人的名称。我正在尝试下面的代码
Uri uri= ContentUris.withAppendedId(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, id);
ContentValues values=new ContentValues();
values.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "<r XX");
getContentResolver().update(uri, values, null,null);
但它没有更新。我能做些什么?请帮忙。我已经检查过互联网以及其他问题,但没有找到满意的答案。
答案 0 :(得分:1)
你似乎没有正确地提供更新参数:
该方法包括:
getContentResolver().update(uri, values, where, selectionArgs)
应包含的地方:
"ContactsContract.CommonDataKinds.Phone._ID+"=?"
并且selectionArgs应包含要更新的联系人的ID。