gpt4 book ai didi

java - 如何从包含联系人详细信息且对象不在电话簿中的对象生成 .vcf 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:56 29 4
gpt4 key购买 nike

我想为一个对象生成一个 .vcf 文件,其中包含联系人信息,如姓名、图像、电话号码、传真号码、电子邮件 ID、地址等。该对象未添加到电话的地址簿中,但它是存储在我的应用程序中。

生成我的 .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 format - 这是一个简单的文本文件。您需要做的就是创建文本文件并使用 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);

(注意这段代码要放在一个activity里面,如果不在activity里面,那么把getExternalFilesDir前面的this替换成的实例>上下文。)

您可以根据需要拥有更多或更少的字段。如果您的字段值中有;\ 字符,则需要使用\ 对它们进行转义;要将换行符放入值中,请将 \\n 写入文件(即文件本身必须包含 \n,第二个斜杠用于转义换行)。

这段代码相当粗糙,但它应该可以帮助您入门。再次查看 VCF 的格式并从那里着手。

更新:感谢@Michael 指出我原来答案中的错误。

关于java - 如何从包含联系人详细信息且对象不在电话簿中的对象生成 .vcf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com