Add auto-focus keyboard on app open

This commit is contained in:
Alex Abudaev 2026-04-03 18:43:35 +08:00
parent 80e07cefef
commit 96223a0f38
3 changed files with 28 additions and 7 deletions

View file

@ -1,8 +1,10 @@
package com.duckai.app.web package com.duckai.app.web
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.inputmethod.InputMethodManager
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
@ -18,7 +20,7 @@ class MainActivity : AppCompatActivity() {
webView = findViewById(R.id.webView) webView = findViewById(R.id.webView)
webView.settings.javaScriptEnabled = true webView.settings.javaScriptEnabled = true
webView.webViewClient = WebViewClient() webView.webViewClient = WebViewClientOverride()
val query = intent?.data?.getQueryParameter("q") val query = intent?.data?.getQueryParameter("q")
val url = if (query != null) { val url = if (query != null) {
@ -30,6 +32,22 @@ class MainActivity : AppCompatActivity() {
webView.loadUrl(url) 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?) { override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent) super.onNewIntent(intent)
this.intent = intent this.intent = intent
@ -38,6 +56,7 @@ class MainActivity : AppCompatActivity() {
if (query != null) { if (query != null) {
val url = "https://duck.ai/?q=${Uri.encode(query)}" val url = "https://duck.ai/?q=${Uri.encode(query)}"
webView.loadUrl(url) webView.loadUrl(url)
webView.postDelayed({ showKeyboard() }, 1000)
} }
} }
} }

View file

@ -2,11 +2,11 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_container" android:id="@+id/widget_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="48dp"
android:background="@drawable/widget_background" android:background="@drawable/widget_background"
android:gravity="center" android:gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="16dp"> android:paddingHorizontal="16dp">
<ImageView <ImageView
android:layout_width="24dp" android:layout_width="24dp"
@ -17,9 +17,10 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="12dp"
android:text="@string/search_duckai" android:text="@string/ask_ai"
android:textColor="#757575" android:textColor="#1a1a1a"
android:textSize="14sp" /> android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>

View file

@ -3,4 +3,5 @@
<string name="app_name">DuckAI</string> <string name="app_name">DuckAI</string>
<string name="search">Search</string> <string name="search">Search</string>
<string name="search_duckai">Search DuckAI</string> <string name="search_duckai">Search DuckAI</string>
<string name="ask_ai">Ask AI</string>
</resources> </resources>