【问题标题】:How to get a vCard (.vcf file) into Android contacts from website如何从网站将 vCard(.vcf 文件)导入 Android 联系人
【发布时间】:2011-05-21 20:56:54
【问题描述】:

我正在尝试将 vCard 从 Web 链接添加到 Android 2.2 上的用户联系人列表。当我将用户定向到 .vcf 文件时,我得到的只是移动浏览器中的文本输出。我已确认文件正在使用 MIME 类型的 text/v-card 传输。这看起来应该很简单。有什么想法吗?

【问题讨论】:

    标签: android vcf-vcard


    【解决方案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
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-26
          • 1970-01-01
          • 1970-01-01
          • 2011-12-30
          • 1970-01-01
          • 2013-03-22
          • 1970-01-01
          相关资源
          最近更新 更多