diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 9fa6a86079..f8d946cc74 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -283,9 +283,22 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate, } private val address: Address.Conversable by lazy { - requireNotNull(IntentCompat.getParcelableExtra(intent, ADDRESS, Address.Conversable::class.java)) { - "Address must be provided in the intent extras" + val fromExtras = + IntentCompat.getParcelableExtra(intent, ADDRESS, Address.Conversable::class.java) + if (fromExtras != null) { + return@lazy fromExtras } + + // Fallback: parse from URI + val serialized = intent.data?.getQueryParameter(ADDRESS) + if (!serialized.isNullOrEmpty()) { + val parsed = fromSerialized(serialized) + if (parsed is Address.Conversable) { + return@lazy parsed + } + } + + throw IllegalArgumentException("Address must be provided in the intent extras or URI") } private val viewModel: ConversationViewModel by viewModels(extrasProducer = { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationItem.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationItem.java index 0454cb8599..c0042fb271 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationItem.java @@ -72,10 +72,12 @@ public long getThreadId() { } public PendingIntent getPendingIntent(Context context) { - - Recipient notifyRecipients = threadRecipient != null ? threadRecipient : conversationRecipient; + Recipient notifyRecipients = getRecipient(); final Intent intent = ConversationActivityV2.Companion.createIntent(context, (Address.Conversable) notifyRecipients.getAddress()); - intent.setData((Uri.parse("custom://"+System.currentTimeMillis()))); + intent.setData(Uri.parse("custom://" + System.currentTimeMillis()) + .buildUpon() + .appendQueryParameter("address", notifyRecipients.getAddress().toString()) + .build()); int intentFlags = PendingIntent.FLAG_UPDATE_CURRENT; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { @@ -83,8 +85,8 @@ public PendingIntent getPendingIntent(Context context) { } return TaskStackBuilder.create(context) - .addNextIntentWithParentStack(intent) - .getPendingIntent(0, intentFlags); + .addNextIntentWithParentStack(intent) + .getPendingIntent(0, intentFlags); } public long getId() {