android vcard字符串联系

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

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

解决方法

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

我认为这比在内部使用’vCards’要复杂得多,特别是因为vCard实际上只是一种文本文件格式,因此存储效率低,而且搜索大量文件也是如此.

ContactsContract概述(注意我在提到’三层数据模型’时将其剪切掉)…

Overview

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

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

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

理论上我认为,有可能将一大堆.vcf文件转储到某个目录中并编写一些代码,这些代码只是创建一个Intent来“打开”其中一个并将其与startActivity()一起使用而不指定哪个活动使用.我不确定在这里会使用哪种意图动作,但我会从ACTION_VIEW开始 – 其他选择可能是ACTION_EDIT或(十分)ACTION_RUN.

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

EDIT2:WRT使用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);

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...