gpt4 book ai didi

android - 修改联系方式

转载 作者:IT王子 更新时间:2023-10-28 23:34:56 29 4
gpt4 key购买 nike

我正在尝试插入和更新关于现有联系人的一条信息,因此我创建了一个示例应用程序来开发该功能。我希望我的示例应用程序做的就是插入(或如果存在)更新联系人的电子邮件地址。

我正在通过系统 Intent 选择联系人,如下所示:

    startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);

返回的 URI 是 Contact (RawContact?) 的 URI,它被选中并以这种形式出现:content://com.android.contacts/contacts/lookup/0r2-2A90214945/2.

我可以通过执行以下代码来拉回所有 Data (RawContact?) 项:

Cursor cursor = contentResolver.query(mContactUri, null, null, null, null);
try {
if (cursor.moveToFirst()) {
for(int i=0; i < cursor.getColumnCount(); i++) {
String message = cursor.getColumnName(i);
Log.v("", message);
}
}
} finally {
cursor.close();
}

据此我应该能够确定联系人是否已经有 CommonDataTypes.Email 数据成员:

cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;

然后执行以下操作之一以 InsertUpdate Data :

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newInsert(mContactUri)
.withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
.withValue(Email.DISPLAY_NAME, "somebody@android.com")
.withValue(Email.TYPE, Email.TYPE_HOME)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

但这给了我一个异常(exception):java.lang.UnsupportedOperationException: URI: content://com.android.contacts/contacts/lookup/0r2-2A90314945/2,调用用户:

希望有人能看到我错过了什么。

PS,我正在使用这些权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

最佳答案

Android 用户需要更新他们的 documentation .实际上,它让我对正在发生的事情了解更少,而不是我从猜测中得到的。它建议您可以拉回一个 Contact,其中将包含许多 RawContacts,其中将包含 Data

这种解释是完全错误的。 ContactContracts 数据是三个正常的平均日常数据库表*:

联系契约(Contract)表

表:Contacts

Access URI: Contacts.CONTENT_URI

Primary Key**: Data._ID

Description:

This table contains information about a Contact (when was it added, what's is it's user icon, does it have a custom ringtone).

Relationship: It has a 1-to-many relationship with the RawContact table.

表:RawContacts

Access URI: RawContacts.CONTENT_URI

Primary Key: Data._ID

Foreign Key**: Data.CONTACT_ID

Description:

This table contains information about a related set of Data items. A RawContact could contain Email Type, Email Display Name, Phone Number, Phone Display Name, etc. A RawContact can be aggregated with other RawContacts to make a Contact as a user sees it. A Contact could contain just one RawContact.

Relationship: It has a 1-to-many relationship with the Data table.

表:Data

Access URI: Data.CONTENT_URI

Primary Key: Data._ID

Foreign Key: Data.RAW_CONTACT_ID

Description:

This table contains a single field of information. An email address, A phone number, A phone number type (home/work), A nickname, A display name.

回答问题

我已将整个示例项目上传到 GitHub,以便其他人了解如何使用 ContactContract 查询、更新和插入记录。

您可以在此处找到要下载的项目: https://github.com/gwoodhouse/ContactContractSample

如果您只想查看执行查询/更新/插入的 java 代码,这里是类文件: https://github.com/gwoodhouse/ContactContractSample/blob/master/ContactsIntegration/src/com/woodhouse/example/activity/ContactsIntegrationActivity.java

希望这会有所帮助!

*不是表格,而是 ContentProvider

** 不是 严格 为真。

关于android - 修改联系方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788053/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com