在 android 4.4 中更新联系人姓名

Update contact name in android 4.4

我想用 Android 4.4 修改 Android 设备 (GT N5110) 中的联系人姓名。我试图通过这种方法做到这一点:

ContentValues contentValues = new ContentValues();
String selection = ContactsContract.Contacts._ID + " = ? " ;
String[] selectionArgs = new String[] { Integer.toString(id) };
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, lastName);
contentValues.put(ContactsContract.Contacts.STARRED, 2); // *
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, lastName);
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, firstName);
return this.context.getContentResolver().update(ContactsContract.Contacts.CONTENT_URI,
            contentValues, selection, selectionArgs);

标有*的行是唯一修改联系人数据库的行。我还尝试了 applyBatch 并添加了 MIMETYPE 选择 (ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)。 MIMETYPE 方法会抛出一些异常并显示以下消息:

android.database.sqlite.SQLiteException: 没有这样的列: mimetype (code 1): , 编译时: SELECT _id FROM view_contacts_restricted WHERE _id = ? AND mimetype=?

我研究并尝试了 update contacts display_name and Modifying contact information 中的建议。

有人可以帮助我吗?

下面的网站给你解释一下。这是 android 本身的完整教程。我强烈建议您在来这里之前先使用该网站检查是否有您的查询的答案。

http://developer.android.com/reference/android/provider/ContactsContract.Intents.html#EXTRA_FORCE_CREATE

本站为您说明的是 将数据发送到您需要ui重新编辑的联系人,它会自动打开包含您传递给它的详细信息的联系人编辑屏幕。 如果你想知道你可以发送给它的所有额外内容。访问以下link。 https://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html

我不确定这是否正确,但这可能是因为某些安全政策或您无法跳过 ui 确认。但是我又不熟悉这个,所以我可能是错的。我没有测试这是否有效或其他任何东西,但我认为它可能会有所帮助。特别是第二个:

http://developer.android.com/reference/android/provider/ContactsContract.Intents.html#EXTRA_FORCE_CREATE

http://www.techjini.com/blog/2011/10/31/insert-and-modify-contact-in-android/