如何从网站获取电子名片(.vcf文件)到Android联系人

问题描述:

我试图从网络链接添加电子名片到用户的Android 2.2联系人列表。当我将用户导向.vcf文件时,我所得到的只是移动浏览器中的文本输出。我已确认文件正在使用MIME类型文本/ v卡进行传输。这看起来应该很简单。有任何想法吗?如何从网站获取电子名片(.vcf文件)到Android联系人

AFAIK Android不支持vCard文件,至少在2.2版之前不支持vCard文件。

您可以使用应用程序vCardIO从SD卡中读取vcf文件并保存到您的联系人。 因此,您必须首先将它们保存在SD卡上,然后再导入它们。

vCardIO也可通过市场。

+9

我发现的最佳解决方案是通过设置content-disposition来强制下载。Apache httpd.conf或.htaccess文件中的vcf文件。然后用户必须打开文件,并询问他们希望如何将联系人信息插入到他们的联系人列表中。这个帖子有很多帮助:http://code.google.com/p/android/issues/detail?id=9215 – ARolek 2010-12-08 06:56:34

我也注意到的是,你必须将文件保存为UnicodeUTF-8,没有BOM在Windows格式与CRLF(回车,换行)。因为如果你不这样做,导入就会中断。 (说一些关于奇怪的字符在文件中)

祝你好运:) 希德

我运行2.2并没有变化,从报告人对2.3说的一样。 Android(bug)不处理.vcf文件,也不处理通过端口80的网页上的这种文件的链接,无论是通过http头还是直接流。它只是不支持。

+0

试图让这个工作,这是我的Android的经验,直到并包括4.0,以及... – 2012-03-29 17:09:27

Android ICS 4.0.4现在有一个导入功能。 首先,您必须将vcf保存在存储设备(USB存储设备或SD卡)上。 Android将扫描选定的存储以检测任何vcf文件并将其导入选定的地址簿。 该功能位于联系人列表的选项菜单中。

这可以用于将文件下载到具有Android版本2.3.3和4.0.3

======= PHP测试你的SD卡 ========== ===============

<?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> 

只是为了让你知道:我刚刚试了一下使用根据vCard 2.1 spec创建一个电子名片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默认浏览器),它工作正常。