diff --git a/app/src/main/java/com/github/droidworksstudio/common/ContextExtensions.kt b/app/src/main/java/com/github/droidworksstudio/common/ContextExtensions.kt index bfa5bfb..03d1750 100644 --- a/app/src/main/java/com/github/droidworksstudio/common/ContextExtensions.kt +++ b/app/src/main/java/com/github/droidworksstudio/common/ContextExtensions.kt @@ -140,11 +140,38 @@ fun Context.showShortToast(message: String) { } fun Context.openSearch(query: String? = null) { - val intent = Intent(Intent.ACTION_WEB_SEARCH) - intent.putExtra(SearchManager.QUERY, query ?: "") - startActivity(intent) + val intent = Intent(Intent.ACTION_WEB_SEARCH).apply { + putExtra(SearchManager.QUERY, query ?: "") + } + // Check if there is an app that can handle the web search intent + val resolvedActivity = intent.resolveActivity(packageManager) + + if (resolvedActivity != null) { + try { + // Get the package name of the app that can handle the intent + val packageName = resolvedActivity.packageName + val appInfo = packageManager.getApplicationInfo(packageName, 0) + val appName = packageManager.getApplicationLabel(appInfo).toString() + + // Log the name of the app that will handle the search + Log.d("WebSearchApp", "Search will be handled by: $appName ($packageName)") + + startActivity(intent) + } catch (e: ActivityNotFoundException) { + e.printStackTrace() + } + } else { + val fallbackUrl = "${Constants.URL_GOOGLE_SEARCH}${Uri.encode(query ?: "")}" + val fallbackIntent = Intent(Intent.ACTION_VIEW, Uri.parse(fallbackUrl)) + try { + startActivity(fallbackIntent) + } catch (e: ActivityNotFoundException) { + e.printStackTrace() + } + } } + fun Context.openUrl(url: String) { if (url.isEmpty()) return val intent = Intent(Intent.ACTION_VIEW) @@ -167,12 +194,6 @@ fun Context.resetDefaultLauncher() { } } -fun Context.searchView() { - val intent = Intent(Intent.ACTION_WEB_SEARCH) - intent.putExtra(SearchManager.QUERY, "") - this.startActivity(intent) -} - fun Context.unInstallApp(appInfo: AppInfo) { val intent = Intent(Intent.ACTION_DELETE) intent.data = Uri.parse("package:${appInfo.packageName}") @@ -318,13 +339,20 @@ fun Context.searchCustomSearchEngine( Constants.SearchEngines.SwissCow -> { Constants.URL_SWISSCOW_SEARCH } - } - val encodedQuery = Uri.encode(searchQuery) - val fullUrl = "$searchUrl$encodedQuery" - Log.d("fullUrl", fullUrl) - openUrl(fullUrl) - return true + else -> { + openSearch(searchQuery) + null // Returning null because we're launching the intent directly + } + } + if (searchUrl != null) { + val encodedQuery = Uri.encode(searchQuery) + val fullUrl = "$searchUrl$encodedQuery" + Log.d("fullUrl", fullUrl) + openUrl(fullUrl) + return true + } + return false } fun Context.isWorkProfileEnabled(): Boolean { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt index 57f0ecf..3856950 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt @@ -161,11 +161,11 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context) Constants.SearchEngines.valueOf( prefs.getString( Constants.SEARCH_ENGINE, - Constants.SearchEngines.Google.name + Constants.SearchEngines.Default.name ).toString() ) } catch (_: Exception) { - Constants.SearchEngines.Google + Constants.SearchEngines.Default } } set(value) = prefs.edit().putString(Constants.SEARCH_ENGINE, value.name).apply() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt index 38d3fb3..af358a0 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt @@ -97,6 +97,7 @@ object Constants { const val LONG_PRESS_DELAY_MS = 500 enum class SearchEngines { + Default, Google, Yahoo, DuckDuckGo, @@ -106,6 +107,7 @@ object Constants { fun getString(context: Context): String { return when (this) { + Default -> context.getString(R.string.search_default) Google -> context.getString(R.string.search_google) Yahoo -> context.getString(R.string.search_yahoo) DuckDuckGo -> context.getString(R.string.search_duckduckgo) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3c4f495..ce1c4fb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -145,6 +145,7 @@ Easy launcher promises to use lock screen permission responsibly. Easy launcher does not collect or share any data. Search Engine + Default Google Yahoo DuckDuckGo