我正在尝试使用我的Android应用共享联系人,并且我有很多东西。有什么方法可以直接使用意图共享联系人?还是我必须发送联系信息并在另一台设备上重建它?另外,是否有其他方法可以不使用意图呢?

最佳答案

您可以使用ContactsContract API将联系人共享为vcard文件(例如,通过Whatsapp发送)。

(我假设您已经有了联系人的lookupKey,如果您没有联系人,请告诉我,我将添加用于从contactId获取它的代码)

UPDATE添加了从ContactId获取LookupKey的方法

(确保您从Contacts导入ContactsContract.Contacts

private String getLookupKey(long contactId) {
    String lookupKey = null;
    String[] projection = new String[]{Contacts.LOOKUP_KEY};
    String selection = Contacts._ID + "=" + contactId;
    Cursor c = getContentResolver().query(Contacts.CONTENT_URI, projection, selection, null, null);
    if (c != null) {
        if (c.moveToFirst()) {
            lookupKey = c.getString(0);
        }
        c.close();
    }
    return lookupKey;
}

String lookupKey = getLookupKey(long contactId);
if (TextUtils.isEmpty(lookupKey)) {
    Log.e(TAG, "couldn't get lookupKey");
    return;
}
Uri shareUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey);

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(Contacts.CONTENT_VCARD_TYPE);
intent.putExtra(Intent.EXTRA_STREAM, shareUri);
intent.putExtra(Intent.EXTRA_SUBJECT, "Share a contact");
startActivity(intent);

10-07 13:20