我正在尝试使用我的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);