通过节约意图vCard联系人(Saving VCard contact via intent)

2019-10-21 22:18发布

我想保存的联系人数据,在VCard格式发送通过意向用户的联系人。 有没有办法做到这一点?

:我不希望保存VCard在数据.vcf文件,然后给它的uriintent像下面的代码。

String scanned = "..." // contact in VCard format
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
File vcfFile = new File(getCacheDir(), "tmp.vcf");
try {
    FileOutputStream fos = new FileOutputStream(vcfFile);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    osw.write(scanned);
    osw.close();
    fos.close();
    i.setDataAndType(Uri.fromFile(vcfFile), "text/vcard");
    startActivity(i);
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Answer 1:

如果接触确实是在联系人数据库,你可以看看Android通讯录应用程序的代码,来看看如何共享一个虚拟卡出来的(从找到这里 ,一个名为“QuickContactActivity.java”文件中):

private void shareContact() {
    final String lookupKey = mContactData.getLookupKey();
    final Uri shareUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey);
    final Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType(Contacts.CONTENT_VCARD_TYPE);
    intent.putExtra(Intent.EXTRA_STREAM, shareUri);

    // Launch chooser to share contact via
    final CharSequence chooseTitle = getText(R.string.share_via);
    final Intent chooseIntent = Intent.createChooser(intent, chooseTitle);

    try {
        mHasIntentLaunched = true;
        ImplicitIntentsUtil.startActivityOutsideApp(this, chooseIntent);
    } catch (final ActivityNotFoundException ex) {
        Toast.makeText(this, R.string.share_error, Toast.LENGTH_SHORT).show();
    }
}


文章来源: Saving VCard contact via intent