実際、.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
。2 番目のスラッシュは、改行のスラッシュをエスケープするためのものです)。
このコードは非常に粗雑ですが、これで始められるはずです。繰り返しますが、VCF のフォーマットを見て、そこから進んでください。
更新:元の回答の間違いを指摘してくれた @Michael に感謝します。