diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index d1cf9cc612..4dc2ad717b 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -33,4 +33,8 @@
- @string/launcher_component
+
+
+ google
+
diff --git a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
index 62508a1d97..37a43614fb 100644
--- a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
+++ b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
@@ -57,10 +57,29 @@ open class QsbSearchProvider(
fun fromId(id: String): QsbSearchProvider =
values().firstOrNull { it.id == id } ?: AppSearch
- fun resolveDefault(context: Context): QsbSearchProvider =
- values()
+ /**
+ * Resolve the default search provider.
+ */
+ fun resolveDefault(context: Context): QsbSearchProvider {
+ val defaultProviderId = context.getString(R.string.config_default_qsb_search_provider_id)
+ val defaultProvider = fromId(defaultProviderId)
+ val isDefaultProviderIntentResolved = QsbLayout.resolveIntent(context, defaultProvider.createSearchIntent())
+
+ // Return the default value from config.xml if the value is valid
+ if (isDefaultProviderIntentResolved) {
+ if (defaultProvider != AppSearch ||
+ (defaultProvider == AppSearch && defaultProviderId == AppSearch.id)) {
+ return defaultProvider
+ }
+ }
+
+ // Return the best default option if the config.xml value is invalid
+ return values()
.filterNot { it == AppSearch }
.firstOrNull { QsbLayout.resolveIntent(context, it.createSearchIntent()) }
?: AppSearch
+
+ }
+
}
}
\ No newline at end of file