如何从网站将 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】:

我还注意到,您必须将文件另存为UnicodeUTF-8,而不是BOM,并以带有CRLF(回车、换行)的Windows 格式保存。因为如果你不这样做,导入就会中断。 (说一下文件中奇怪的字符)

祝你好运:) 席德

【讨论】:

【参考方案8】:

我花了 2 天时间找到了一个用于生成真正的 vcf 文件的 php 库,你可以试试这个库: 链接:[https://github.com/Sekiphp/vCard][1] 它适用于我的项目,希望它也适用于你的项目:)

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何从网站将 vCard(.vcf 文件)导入 Android 联系人的主要内容,如果未能解决你的问题,请参考以下文章

通讯录制作(.csv文件转.vcf文件即vcard格式)

使用适用于 Android 的 ez-vcard 库导入 VCard 文件

手机上csv如何改为vcard

使用联系人应用程序直接打开 .vcf vCard 文件

将所有联系人导出到 VCF (vcard) 文件 Windows phone

使用链接到图像文件的 URL 导入的“PHOTO”创建 VCF 文件