From 96223a0f38d595abdb047341bc98bc04c4e9d3f6 Mon Sep 17 00:00:00 2001 From: Alex Abudaev Date: Fri, 3 Apr 2026 18:43:35 +0800 Subject: [PATCH] Add auto-focus keyboard on app open --- .../java/com/duckai/app/web/MainActivity.kt | 21 ++++++++++++++++++- app/src/main/res/layout/widget_search.xml | 13 ++++++------ app/src/main/res/values/strings.xml | 1 + 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/duckai/app/web/MainActivity.kt b/app/src/main/java/com/duckai/app/web/MainActivity.kt index d462144..330c0ed 100644 --- a/app/src/main/java/com/duckai/app/web/MainActivity.kt +++ b/app/src/main/java/com/duckai/app/web/MainActivity.kt @@ -1,8 +1,10 @@ package com.duckai.app.web +import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle +import android.view.inputmethod.InputMethodManager import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity @@ -18,7 +20,7 @@ class MainActivity : AppCompatActivity() { webView = findViewById(R.id.webView) webView.settings.javaScriptEnabled = true - webView.webViewClient = WebViewClient() + webView.webViewClient = WebViewClientOverride() val query = intent?.data?.getQueryParameter("q") val url = if (query != null) { @@ -30,6 +32,22 @@ class MainActivity : AppCompatActivity() { webView.loadUrl(url) } + private inner class WebViewClientOverride : WebViewClient() { + override fun onPageFinished(view: WebView?, url: String?) { + view?.postDelayed({ + view.evaluateJavascript( + "document.querySelector('input[type=\"text\"], input[placeholder*=\"задайте\"], input[placeholder*=\"ask\"], [role=\"combobox\"]')?.focus();" + ) { } + showKeyboard() + }, 500) + } + } + + private fun showKeyboard() { + val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0) + } + override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) this.intent = intent @@ -38,6 +56,7 @@ class MainActivity : AppCompatActivity() { if (query != null) { val url = "https://duck.ai/?q=${Uri.encode(query)}" webView.loadUrl(url) + webView.postDelayed({ showKeyboard() }, 1000) } } } \ No newline at end of file diff --git a/app/src/main/res/layout/widget_search.xml b/app/src/main/res/layout/widget_search.xml index 05945c8..7d7e9c5 100644 --- a/app/src/main/res/layout/widget_search.xml +++ b/app/src/main/res/layout/widget_search.xml @@ -2,11 +2,11 @@ + android:paddingHorizontal="16dp"> + android:layout_marginStart="12dp" + android:text="@string/ask_ai" + android:textColor="#1a1a1a" + android:textSize="16sp" + android:textStyle="bold" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c6ead8..631c40a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,4 +3,5 @@ DuckAI Search Search DuckAI + Ask AI \ No newline at end of file