将联系人保存到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)
好吧,你不能那样做。联系人存储在内部数据库中,该数据库仅具有其定义的列。您无法添加自己的列。您可以在 ContactsContract.Data 的文档中找到列列表。
如果希望应用有额外的列,则需要将它们存储在自己的数据库中。这将要求您在查询数据库时以某种方式合并系统联系人数据和您自己的数据。在这种情况下,我可能会使用CursorWrapper。您需要将数据保存到系统 db 和您自己的数据库中。一般来说,这将是一个非平凡的代码。