mirror of
https://github.com/element-hq/element-android
synced 2024-11-27 03:48:12 +03:00
Add a check on incoming intent.
This commit is contained in:
parent
355d091c94
commit
53734255ec
2 changed files with 20 additions and 0 deletions
1
changelog.d/+check-intent.bugfix
Normal file
1
changelog.d/+check-intent.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add a check on incoming intent.
|
|
@ -39,6 +39,9 @@ import im.vector.app.features.analytics.VectorAnalytics
|
||||||
import im.vector.app.features.analytics.plan.ViewRoom
|
import im.vector.app.features.analytics.plan.ViewRoom
|
||||||
import im.vector.app.features.home.HomeActivity
|
import im.vector.app.features.home.HomeActivity
|
||||||
import im.vector.app.features.home.ShortcutsHandler
|
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.notifications.NotificationDrawerManager
|
||||||
import im.vector.app.features.pin.UnlockedActivity
|
import im.vector.app.features.pin.UnlockedActivity
|
||||||
import im.vector.app.features.pin.lockscreen.crypto.LockScreenKeyRepository
|
import im.vector.app.features.pin.lockscreen.crypto.LockScreenKeyRepository
|
||||||
|
@ -115,6 +118,14 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
|
||||||
putExtra(EXTRA_ROOM_ID, roomId)
|
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()
|
private val startAppViewModel: StartAppViewModel by viewModel()
|
||||||
|
@ -186,6 +197,7 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
|
||||||
// Start the next Activity
|
// Start the next Activity
|
||||||
startSyncing()
|
startSyncing()
|
||||||
val nextIntent = intent.getParcelableExtraCompat<Intent>(EXTRA_NEXT_INTENT)
|
val nextIntent = intent.getParcelableExtraCompat<Intent>(EXTRA_NEXT_INTENT)
|
||||||
|
?.takeIf { it.isValid() }
|
||||||
startIntentAndFinish(nextIntent)
|
startIntentAndFinish(nextIntent)
|
||||||
} else if (intent.hasExtra(EXTRA_INIT_SESSION)) {
|
} else if (intent.hasExtra(EXTRA_INIT_SESSION)) {
|
||||||
startSyncing()
|
startSyncing()
|
||||||
|
@ -380,4 +392,11 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
|
||||||
intent?.let { startActivity(it) }
|
intent?.let { startActivity(it) }
|
||||||
finish()
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue