更新android 4.4中的联系人姓名

时间:2015-08-21 02:05:37

标签: android android-contentprovider android-contacts

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

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(代码1):,同时编译:SELECT _id FROM view_contacts_restricted WHERE _id =?和mimetype =?

我研究并尝试了update contacts display_nameModifying contact information中提出的建议。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

以下网站向您解释。这是android本身的完整教程。我强烈建议您在到达此处之前首先检查您的查询是否有答案。

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

本网站向您解释的是 将数据发送到您需要编辑的联系人,它会自动打开联系人编辑屏幕,其中包含您传递给它的详细信息。 如果您想知道您可以发送给它的所有额外内容。请访问以下链接。 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/