gpt4 book ai didi

要联系的 android vcard 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:30 24 4
gpt4 key购买 nike

我想知道是否有一种干净的方法可以将 vcard 作为 android 联系人导入。我有一个 vcard 解析器,但是映射每个可能的 vcard 字段和字段类型将是一个痛苦的、容易出错的练习。有没有更好的办法?

Android 联系人看起来很像电子名片,所以我怀疑他们在内部使用电子名片。但是,没有公共(public) API。

最佳答案

an android contact looks suspiciously like a vcard, so i suspect they use vcards internally.

我认为这比使用“内部 vCard”要复杂得多,尤其是因为 vCard 实际上只是一种文本文件格式,存储效率低下,搜索大量 vCard 时更是如此。

ContactsContract概述(请注意,我在提到“三层数据模型”的地方删掉了它)...

Overview

ContactsContract defines an extensible database of contact-related information. Contact information is stored in a three-tier data model:

据我所知,有一种方法可以“提取”与个人联系人相关的 vCard,但我不知道有什么方法可以从 vCard 创建联系人。

编辑: WRT 在浏览器中单击链接时导入 vCards - 是的,好点。我可以确认它至少在通过蓝牙接收 vCard 时有效(当然,这很合乎逻辑)。如果我在手机上“打开”vCard,我会收到一个“选择器”,询问我是否要使用“文件编辑器”或“人员”(HTC 联系人应用程序 - 不确定它在其他手机上的名称是否相同)。如果只有一张 vCard,则无需进一步提示即可导入。如果有多个,我会得到另一个选择器,询问我是否要导入一个/多个/全部(多个给另一个选择器提供复选框以进行选择)。

理论上,我想,有可能将整个负载的 .vcf 文件转储到某个目录中,并编写一些代码,这些代码只是创建一个 Intent 来“打开”其中一个文件,并将其与 startActivity() 一起使用而无需指定要使用的 Activity 。我不确定此处将使用哪个 Intent 操作,但我将从 ACTION_VIEW 开始 - 其他选择可能是 ACTION_EDIT 或(勉强地)ACTION_RUN。

虽然这可能在已知环境中工作,特别是作为一次性的,但它有点困惑,并且行为/结果可能因不同的手机、Android 版本和联系人应用程序而异。

EDIT2:关于使用 Intent 处理 .vcf 文件,我只在我的 SD 卡上尝试过 - 如果不先保存它,我不知道该怎么做。以下内容准确再现了我打开通过蓝牙发送的 vCard 时看到的内容...

Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file:///mnt/sdcard/downloads/bluetooth/MickeyMouse.vcf"), "text/x-vcard");
startActivity(i);

关于要联系的 android vcard 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599567/

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