From b8e5d14426b45123c0a1f0ab14cbaa7de14b675c Mon Sep 17 00:00:00 2001 From: xhon-pelushi Date: Thu, 13 Aug 2026 00:15:02 -0400 Subject: [PATCH] Read Intent.EXTRA_EMAIL as a String[] instead of a String Intent.EXTRA_EMAIL is documented as a String[] of e-mail addresses, but LaunchConversationActivity and ShareIntentActivity read it with getStringExtra(), which silently returns null for the array extras put by well-behaved senders (including this app's own VCardDetailEffectHandler, which already puts EXTRA_EMAIL as a String[]). Use getStringArrayExtra() so intents carrying the extra in its documented type are handled, and forward every address rather than only the first one. Fixes #164 --- .../ui/conversation/LaunchConversationActivity.java | 5 +++-- .../ui/conversationpicker/host/share/ShareIntentActivity.kt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java b/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java index 5c9e10357..e05a01bb9 100644 --- a/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java +++ b/src/com/android/messaging/ui/conversation/LaunchConversationActivity.java @@ -71,12 +71,13 @@ protected void onCreate(final Bundle savedInstanceState) { recipients = commaSeparatedRecipients.split(","); } final boolean haveAddress = !TextUtils.isEmpty(intent.getStringExtra(ADDRESS)); - final boolean haveEmail = !TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_EMAIL)); + final String[] emails = intent.getStringArrayExtra(Intent.EXTRA_EMAIL); + final boolean haveEmail = emails != null && emails.length > 0; if (recipients == null && (haveAddress || haveEmail)) { if (haveAddress) { recipients = new String[] { intent.getStringExtra(ADDRESS) }; } else { - recipients = new String[] { intent.getStringExtra(Intent.EXTRA_EMAIL) }; + recipients = emails; } } if (recipients != null) { diff --git a/src/com/android/messaging/ui/conversationpicker/host/share/ShareIntentActivity.kt b/src/com/android/messaging/ui/conversationpicker/host/share/ShareIntentActivity.kt index bba460809..1112dbbd8 100644 --- a/src/com/android/messaging/ui/conversationpicker/host/share/ShareIntentActivity.kt +++ b/src/com/android/messaging/ui/conversationpicker/host/share/ShareIntentActivity.kt @@ -128,7 +128,7 @@ class ShareIntentActivity : BugleComponentActivity() { private fun redirectToSendToIfNeeded(): Boolean { val hasNoDestination = intent.getStringExtra(EXTRA_ADDRESS).isNullOrEmpty() && - intent.getStringExtra(Intent.EXTRA_EMAIL).isNullOrEmpty() + intent.getStringArrayExtra(Intent.EXTRA_EMAIL).isNullOrEmpty() if (Intent.ACTION_SEND != intent.action || hasNoDestination) { return false