在 android 4.4 中更新联系人姓名

Posted

技术标签:

【中文标题】在 android 4.4 中更新联系人姓名【英文标题】:Update contact name in android 4.4 【发布时间】:2015-11-14 20:45:00 【问题描述】:

我想在装有 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: no such column: mimetype (code 1): , 编译时:SELECT _id FROM view_contacts_restricted WHERE _id = ? AND mimetype=?

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

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

以下网站向您解释。这是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/

【讨论】:

您提出的建议会打开一些联系人活动以进行更新。我需要通过编程来做到这一点,没有用户干预。这些更新将发生在服务中。 有什么办法可以避免接触屏更新display_name联系人吗? 我不这么认为,但我会继续寻找 developer.android.com/reference/android/provider/… 中指出的方法将打开联系人活动。这些行为是不可取的,因为我试图在没有用户干预的情况下修改联系人姓名。联系人更新应该在后台进行。 正如我所说,这可能是因为安全策略

以上是关于在 android 4.4 中更新联系人姓名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studios 中更新联系人的电话号码

如何在 Android 中编辑现有联系人?

如何在 Android 2.2 中删除带有姓名的联系人?

从 Android 联系人中获取联系人姓名和姓氏

如何从android中的联系人姓名获取联系人的号码

android获取联系人图片、姓名和手机号码