将联系人保存到Android联系人数据库时,我想将自己的唯一标识符保存到联系人。如何实现这一目标?
到目前为止,这是我的尝试,
private void saveMyId(int myId, ArrayList<ContentProviderOperation> ops){
ops.add(ContentProviderOperation.
newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue("MyId", myId).build()
);
}
此崩溃时出现以下错误
android.content.OperationApplicationException:插入失败 android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:158)
答案 0 :(得分:0)
嗯,你不能这样做。 联系人存储在内部数据库中,该数据库仅包含已定义的列。您无法添加自己的列。您可以在ContactsContract.Data的文档中找到列的列表。
如果您想为应用添加额外的列,则需要将它们存储在您自己的数据库中。这将要求您在查询数据库时以某种方式合并系统联系人数据和您自己的数据。在这种情况下,我可能会使用CursorWrapper。您需要将数据保存到系统数据库和您自己的数据库中。一般来说,它将是一个非平凡的代码。