From 84a62ae8e0e17914fc8ec1741f23f991c13b87f0 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 13 Aug 2024 16:54:50 +0200 Subject: [PATCH] Add intent filter to deep link settings pages --- app/ui/src/main/AndroidManifest.xml | 9 +++++++ .../launcher2/ui/settings/SettingsActivity.kt | 26 +++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/ui/src/main/AndroidManifest.xml b/app/ui/src/main/AndroidManifest.xml index 8e6bca12..840b8a59 100644 --- a/app/ui/src/main/AndroidManifest.xml +++ b/app/ui/src/main/AndroidManifest.xml @@ -65,6 +65,15 @@ + + + + + + + + + diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivity.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivity.kt index 819fa730..b2fe25ba 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivity.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivity.kt @@ -83,16 +83,24 @@ class SettingsActivity : BaseActivity() { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) - val newRoute = intent?.getStringExtra(EXTRA_ROUTE) + val newRoute = getStartRoute(intent) route = newRoute setContent { val navController = rememberNavController() LaunchedEffect(route) { - navController.navigate(route ?: "settings") { - popUpTo("settings") { - inclusive = true + try { + navController.navigate(route ?: "settings") { + popUpTo("settings") { + inclusive = true + } + } + } catch (e: IllegalArgumentException) { + navController.navigate("settings") { + popUpTo("settings") { + inclusive = true + } } } } @@ -288,10 +296,18 @@ class SettingsActivity : BaseActivity() { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) - val newRoute = intent.getStringExtra(EXTRA_ROUTE) + val newRoute = getStartRoute(intent) route = newRoute } + private fun getStartRoute(intent: Intent): String? { + if (intent.data?.host == "kvaesitso.mm20.de") { + return intent.data?.getQueryParameter("route") + } else { + return intent.getStringExtra(EXTRA_ROUTE) + } + } + companion object { const val EXTRA_ROUTE = "de.mm20.launcher2.settings.ROUTE" const val ROUTE_WEATHER_INTEGRATION = "settings/integrations/weather"