diff --git a/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/MediaFileUtils.kt b/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/MediaFileUtils.kt
index a029d5e6b1..5b40c4a789 100644
--- a/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/MediaFileUtils.kt
+++ b/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/MediaFileUtils.kt
@@ -24,7 +24,7 @@ import java.util.Locale
internal fun createTemporaryMediaFile(context: Context, mediaType: MediaType): File {
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
- val storageDir: File = context.filesDir.also { it.mkdirs() }
+ val storageDir: File = File(context.filesDir, "media").also { it.mkdirs() }
val fileSuffix = when (mediaType) {
MediaType.IMAGE -> ".jpg"
MediaType.VIDEO -> ".mp4"
diff --git a/library/multipicker/src/main/res/xml/multipicker_provider_paths.xml b/library/multipicker/src/main/res/xml/multipicker_provider_paths.xml
index ff9b81ce98..fd5f866c2b 100644
--- a/library/multipicker/src/main/res/xml/multipicker_provider_paths.xml
+++ b/library/multipicker/src/main/res/xml/multipicker_provider_paths.xml
@@ -2,5 +2,5 @@
-
\ No newline at end of file
+ path="media" />
+
diff --git a/vector/src/main/java/im/vector/app/features/MainActivity.kt b/vector/src/main/java/im/vector/app/features/MainActivity.kt
index c8aa108ccb..0f0ac83903 100644
--- a/vector/src/main/java/im/vector/app/features/MainActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/MainActivity.kt
@@ -39,6 +39,9 @@ import im.vector.app.features.analytics.VectorAnalytics
import im.vector.app.features.analytics.plan.ViewRoom
import im.vector.app.features.home.HomeActivity
import im.vector.app.features.home.ShortcutsHandler
+import im.vector.app.features.home.room.detail.RoomDetailActivity
+import im.vector.app.features.home.room.threads.ThreadsActivity
+import im.vector.app.features.location.live.map.LiveLocationMapViewActivity
import im.vector.app.features.notifications.NotificationDrawerManager
import im.vector.app.features.pin.UnlockedActivity
import im.vector.app.features.pin.lockscreen.crypto.LockScreenKeyRepository
@@ -115,6 +118,14 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity
putExtra(EXTRA_ROOM_ID, roomId)
}
}
+
+ val allowList = listOf(
+ HomeActivity::class.java.name,
+ MainActivity::class.java.name,
+ RoomDetailActivity::class.java.name,
+ ThreadsActivity::class.java.name,
+ LiveLocationMapViewActivity::class.java.name,
+ )
}
private val startAppViewModel: StartAppViewModel by viewModel()
@@ -186,6 +197,7 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity
// Start the next Activity
startSyncing()
val nextIntent = intent.getParcelableExtraCompat(EXTRA_NEXT_INTENT)
+ ?.takeIf { it.isValid() }
startIntentAndFinish(nextIntent)
} else if (intent.hasExtra(EXTRA_INIT_SESSION)) {
startSyncing()
@@ -380,4 +392,11 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity
intent?.let { startActivity(it) }
finish()
}
+
+ private fun Intent.isValid(): Boolean {
+ val componentName = resolveActivity(packageManager) ?: return false
+ val packageName = componentName.packageName
+ val className = componentName.className
+ return packageName == buildMeta.applicationId && className in allowList
+ }
}