如何在android中以编程方式共享联系人

时间:2017-01-06 12:26:11

标签: java android share contacts contactscontract

我目前正在开发一个联系人应用程序,我一直在寻找一段时间以编程方式在android中分享联系人。我不知道我应该将联系人发送到其他设备的格式。如果我发送文本,它将如何处理成接收器设备中的联系人合同?你能告诉我如何让它发挥作用吗?

3 个答案:

答案 0 :(得分:2)

您需要获取联系人的VCard句柄(使用ContactsContract API:Contacts.CONTENT_VCARD_URI),然后使用ACTION_SEND意图发送。

String lookupKey = <the contact's lookup key>;
Uri vcardUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(ContactsContract.Contacts.CONTENT_VCARD_TYPE);
intent.putExtra(Intent.EXTRA_STREAM, shareUri);
intent.putExtra(Intent.EXTRA_SUBJECT, "Bob Dylan"); // put the name of the contact here
startActivity(intent);

在此处查看更多信息: https://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#CONTENT_VCARD_URI

<强>更新

回答@Abhay Maniyar删除的问题 - 从contactId获取lookupKey:

Cursor cur = getContentResolver().query(Contacts.CONTENT_URI, new String[] { Contacts.LOOKUP_KEY }, Contacts._ID + " = " + contactId, null, null);
if (cur.moveToFirst()) {
    String lookupKey = cur.getString(0);
}

答案 1 :(得分:1)

如果你问如何将它分享给whatsapps这样的东西,你可以尝试发送它和意图。

你可以发送这样的纯文本:

Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
try {
    activity.startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}

有关详细信息,请参阅 Share image and text through Whatsapp or Facebook

如果你想更进一步,我建议你看看像 WhatsApp

这样的第三方开发文档

还可以在 this page of Android

上找到更一般的信息

Here 概述了您可以在意图中发送的内容。

答案 2 :(得分:0)

  

使用以下代码分享您的联系人,从联系人光标

获取联系人姓名和LookupKey
private void shareContact() {
    //lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
    String lookupKey2 = lookupKey;
    Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey2);
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType(ContactsContract.Contacts.CONTENT_VCARD_TYPE);
    intent.putExtra(Intent.EXTRA_STREAM, uri );
    intent.putExtra(Intent.EXTRA_SUBJECT, contactName); // put the name of the contact here
    startActivity(intent);
}