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"