Share profile contacts as concrete vCard files

This commit is contained in:
copilot-swe-agent[bot]
2026-05-28 16:29:06 +00:00
committed by GitHub
parent 0ac9bea63c
commit f19e8d64ce
@@ -25,8 +25,11 @@ import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ShareUtil;
@@ -398,7 +401,19 @@ public class ProfileActivity extends PassphraseRequiredActionBarActivity
Intent composeIntent = new Intent();
DcContact dcContact = dcContext.getContact(contactId);
if (dcContact.isKeyContact()) {
ShareUtil.setSharedContactId(composeIntent, contactId);
try {
byte[] vcard =
rpc.makeVcard(rpc.getSelectedAccountId(), Collections.singletonList(contactId))
.getBytes();
Uri vcardUri =
PersistentBlobProvider.getInstance().create(this, vcard, "text/vcard", "contact.vcf");
ArrayList<Uri> uris = new ArrayList<>();
uris.add(vcardUri);
ShareUtil.setSharedUris(composeIntent, uris);
} catch (RpcException e) {
e.printStackTrace();
ShareUtil.setSharedText(composeIntent, dcContact.getAddr());
}
} else {
ShareUtil.setSharedText(composeIntent, dcContact.getAddr());
}