android vcardstring来联系

我想知道是否有一个干净的方式来导入一个Vcard作为一个Android联系人。 我有一个vcardparsing器,但映射每个可能的vcard字段和字段types将是一个痛苦的,容易出错的练习。 有没有更好的办法?

一个android联系人看起来像一个vcard可疑,所以我怀疑他们在内部使用vcards。 但是没有公共的API。

Solutions Collecting From Web of "android vcardstring来联系"

一个android联系人看起来像一个vcard可疑,所以我怀疑他们在内部使用vcards。

我认为这比在内部使用“vCards”要复杂得多,特别是因为vCard实际上只是一种文本文件格式,使得存储效率低下,而且search大量文件。

ContactsContract的概述(注意我在它提到的“三层数据模型”中将其切入)…

概观

ContactsContract定义了与联系人相关的信息的可扩展数据库。 联系人信息存储在三层数据模型中:

据我所知,有一种方法可以“提取”与个人联系人有关的电子名片,但我不知道从电子名片中创build联系人。

编辑:点击浏览器中的链接WRT导入vCard – 是的,好点。 我可以确认它至less在蓝牙接收电子名片(这当然是非常合乎逻辑的)时起作用。 如果我在手机上“打开”电子名片,我会得到一个“select器”,询问我是否要使用“文件编辑器”或“人物”(HTC联系人应用程序 – 不确定在其他手机上的名称是否相同)。 如果只有一个电子名片,那么它不会进一步提示input。 如果有多个选项,我会得到另一个select器,询问是否要导入一个/多个/全部(多个给出另一个带有checkbox的select器来作出我的select)。

从理论上讲,我们可能会将整个.vcf文件加载到某个目录中,然后编写一些代码,这些代码只是创build一个Intent来打开其中的一个,然后将它用于startActivity()而不用指定哪个活动使用。 我不确定在这里会使用哪个intent动作,但是我会从ACTION_VIEW开始 – 其他的select可能是ACTION_EDIT或者ACTION_RUN。

虽然这可能在一个已知的环境,特别是作为一个工作,这是有点乱,行为/结果可能会有所不同,不同的手机,Android和联系人应用程序的版本。

编辑2: WRT使用意图处理.vcf文件,我只试过从我的SD卡 – 我不知道如何做到这一点,而不是先保存它。 以下内容重现了我在打开通过蓝牙发送的电子名片时看到的内容…

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); 

我作为一个vCard在Android导入联系人挣扎了很多,花了很多时间后,我来到没有公共API的导入联系人。

我所知的唯一方法是重用Android的源代码。 我通过重复使用Android 2.1源代码实现了同样的效果。

这些文件可以从中引用

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/pim/vcard/exception/VCardException.java/

在右侧的资源pipe理器中,您将findpim文件夹下所需的所有文件。 将负责启动该过程的文件是ImportVCardActivity.java

我希望它可以帮助!