如何使用内容提供商更新现有联系人

时间:2015-01-05 21:33:11

标签: android android-contentprovider

我正在尝试使用内容提供商编辑手机的联系人。要加载我使用下面代码的数据,它工作正常。

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);

但它没有更新。我能做些什么?请帮忙。我已经检查过互联网以及其他问题,但没有找到满意的答案。

1 个答案:

答案 0 :(得分:1)

你似乎没有正确地提供更新参数:

该方法包括:

getContentResolver().update(uri, values, where, selectionArgs)

应包含的地方:

 "ContactsContract.CommonDataKinds.Phone._ID+"=?"

并且selectionArgs应包含要更新的联系人的ID。