如何从网站将 vCard(.vcf 文件)导入 Android 联系人
Posted
技术标签:
【中文标题】如何从网站将 vCard(.vcf 文件)导入 Android 联系人【英文标题】:How to get a vCard (.vcf file) into Android contacts from website 【发布时间】:2011-05-21 20:56:54 【问题描述】:我正在尝试将 vCard 从 Web 链接添加到 android 2.2 上的用户联系人列表。当我将用户定向到 .vcf 文件时,我得到的只是移动浏览器中的文本输出。我已确认文件正在使用 MIME 类型的 text/v-card 传输。这看起来应该很简单。有什么想法吗?
【问题讨论】:
【参考方案1】:AFAIK Android 至少在 2.2 之前不支持开箱即用的 vCard 文件。
您可以使用应用程序vCardIO 从您的 SD 卡中读取 vcf 文件并将其保存到您的联系人中。 因此,您必须首先将它们保存在 SD 卡上,然后再导入。
vCardIO 也可以通过市场获得。
【讨论】:
我发现的最佳解决方案是通过将 content-disposition 设置为 Apache httpd.conf 或 .htaccess 文件中的 .vcf 文件的附件来强制下载。然后用户必须打开文件,并询问他们希望如何将联系人信息插入到他们的联系人列表中。这个帖子帮了很多忙:code.google.com/p/android/issues/detail?id=9215【参考方案2】:只是让您知道:我刚刚使用根据vCard 2.1 spec 创建的 vCard 2.1 文件进行了尝试。我发现 vCard 2.1 尽管是旧版本,但已经涵盖了我需要的所有内容,包括 base64 编码的照片和国际字符集。
它在我未经修改的 Android 4.1.1 设备 (Galaxy S3) 上完美运行。它还适用于旧 iPhone 3GS(ios 5,通过Evernote app)和同事未经修改的旧 Android 2.1 设备。您只需按照上面的建议将Content-disposition
设置为attachment
。
一个小问题是我使用QR code 触发了VCF 下载,我使用Microsoft Tag app 对其进行了扫描。该应用程序告诉我Android 无法处理text/x-vcard
媒体类型(或者只是text/vcard
,无论如何)。在 Web 浏览器中打开链接后(我尝试了 Chrome 和 Android 默认浏览器),它运行良好。
【讨论】:
【参考方案3】:Android ICS 4.0.4 现在有一个导入功能。
首先,您必须将.vcf
文件保存在存储设备(USB 存储设备或 SD 卡)上。
Android 将扫描所选存储以检测任何.vcf
文件并将其导入所选地址簿。
该功能位于联系人列表的选项菜单中。
!注意: 执行此操作时要小心!Android 会在您的存储中导入 EVERYTHING,即 .vcf
。要么全有,要么全无,后果可能是毁掉你的通讯录。
【讨论】:
【参考方案4】:这可用于将文件下载到您的 SD 卡 使用 Android 版本 2.3.3 和 4.0.3 测试
======= php ==========================
<?php
// this php file (example saved as name is vCardDL.php) is placed in my html subdirectory
//
header('Content-Type: application/octet-stream');
// the above line is needed or else the .vcf file will be downloaded as a .htm file
header('Content-disposition: attachment; filename="xxxxxxxxxx.vcf"');
//
//header('Content-type: application/vcf'); remove this so android doesn't complain that it does not have a valid application
readfile('../aaa/bbb/xxxxxxxxxx.vcf');
//The above is the parth to where the file is located - if in same directory as the php, then just the file name
?>
======= html =========================
<FONT COLOR="#CC0033"><a href="vCardDL.php">Download vCARD</A></FONT>
【讨论】:
现在你可以使用header("Content-type: text/x-vcard; charset=utf-8")
作为标题【参考方案5】:
我正在运行 2.2 并且没有任何变化,其他人在 2.3 上的报告也这么说。 Android(错误)不处理 .vcf 或通过端口 80 处理网页上此类文件的链接,无论是通过 http 标头还是直接流式传输。它根本不受支持。
【讨论】:
在尝试让它工作之后,这是我对 Android 的体验,包括 4.0,以及...... 我知道这是一个旧答案,但有人可能会偶然发现它:可能与他们添加的 OEM 版本和功能有关。【参考方案6】:我在使用标准通讯录应用在 Android 7 (LineageOS) 上导入 VERSION:4.0
vcard 文件时遇到问题。
由于这是“不支持 android vcard 格式”的热门搜索结果,我只想指出,我可以使用 Simple Contacts 应用程序(Play 或 @ 987654322@).
【讨论】:
谢谢你!效果很好。请注意,从 F-Droid 安装此应用程序需要 root 作为其拆分 APK。我使用这种方法导入了我的 ProtonMail 联系人【参考方案7】:我还注意到,您必须将文件另存为Unicode
、UTF-8
,而不是BOM
,并以带有CRLF
(回车、换行)的Windows 格式保存。因为如果你不这样做,导入就会中断。 (说一下文件中奇怪的字符)
祝你好运:) 席德
【讨论】:
【参考方案8】:我花了 2 天时间找到了一个用于生成真正的 vcf 文件的 php 库,你可以试试这个库: 链接:[https://github.com/Sekiphp/vCard][1] 它适用于我的项目,希望它也适用于你的项目:)
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于如何从网站将 vCard(.vcf 文件)导入 Android 联系人的主要内容,如果未能解决你的问题,请参考以下文章
使用适用于 Android 的 ez-vcard 库导入 VCard 文件