生成 .vcf 文件实际上很容易。看看VCF 格式- 它是一个简单的文本文件。您需要做的就是创建文本文件并使用 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
。)
您可以根据需要拥有更多或更少的字段。如果字段值中有或字符,
,则需要使用;对其进行转义。将换行符放入一个值中,写入文件(即文件本身必须包含,第二个斜杠用于转义换行符中的斜杠)。;
\
\
\\n
\n
这段代码相当粗糙,但它应该可以帮助您入门。再一次,看看 VCF 的格式,然后从那里开始。
更新:感谢@Michael 指出我原始答案中的错误。