我想为一个对象生成一个 .vcf 文件,其中包含姓名、图像、电话号码、传真号码、电子邮件地址、地址等联系信息。该对象未添加到手机的通讯录中,但存储在我的地址簿中。应用。
生成 .vcf 文件后,我可以像这样发送此 vcard
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("**generated.vcf**"), "text/x-vcard");
startActivity(i);
但我不知道如何获取此生成的 .vcf 文件?
实际上生成 .vcf 文件非常容易。看一下VCF格式 http://en.wikipedia.org/wiki/VCard- 这是一个简单的文本文件。您所需要做的就是创建文本文件并使用 VCF 字段将信息写入其中。你最终会得到这样的结果:
Person p = getPerson();
File vcfFile = new File(this.getExternalFilesDir(null), "generated.vcf");
FileWriter fw = new FileWriter(vcfFile);
fw.write("BEGIN:VCARD\r\n");
fw.write("VERSION:3.0\r\n");
fw.write("N:" + p.getSurname() + ";" + p.getFirstName() + "\r\n");
fw.write("FN:" + p.getFirstName() + " " + p.getSurname() + "\r\n");
fw.write("ORG:" + p.getCompanyName() + "\r\n");
fw.write("TITLE:" + p.getTitle() + "\r\n");
fw.write("TEL;TYPE=WORK,VOICE:" + p.getWorkPhone() + "\r\n");
fw.write("TEL;TYPE=HOME,VOICE:" + p.getHomePhone() + "\r\n");
fw.write("ADR;TYPE=WORK:;;" + p.getStreet() + ";" + p.getCity() + ";" + p.getState() + ";" + p.getPostcode() + ";" + p.getCountry() + "\r\n");
fw.write("EMAIL;TYPE=PREF,INTERNET:" + p.getEmailAddress() + "\r\n");
fw.write("END:VCARD\r\n");
fw.close();
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(vcfFile), "text/x-vcard");
startActivity(i);
(请注意,此代码要放置在活动中。如果它不在活动中,则替换this
在...前面getExternalFilesDir
与一个实例Context
.)
您可以根据需要拥有更多或更少的字段。如果你有,
, ;
or \
字段值中的字符,需要使用转义\
;要将换行符放入值中,请编写\\n
到文件中(即文件本身必须包含\n
,第二个斜杠用于转义换行符中的斜杠)。
这段代码相当粗糙,但它应该可以帮助您入门。再次查看一下 VCF 的格式并从那里开始。
Update:感谢@Michael 指出我原来答案中的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)