如何在 Android 上的 Web 视图中自动填充特定字段?

How can I autofill specific fields in a webview on Android?

提问人:Shahnazi2002 提问时间:11/7/2023 更新时间:11/7/2023 访问量:41

问:

我希望创建一个 Android 应用程序 (Kotlin),当单击按钮时,它会导航到网页,自动填充预定义值并执行登录操作。

我尝试按如下方式进行操作,但没有成功:

val webView = binding.webView
webView.settings.javaScriptEnabled = true
webView.webViewClient = WebViewClient()
val loginPage = "http://example.com/login"
webView.loadUrl(loginPage)

val username = "4000000000"
val password = "1234567890"

binding.loginButton.setOnClickListener {
    val jsCode = """
    document.querySelector('input[name="username"]').value = "$username";
    document.querySelector('input[name="password"]').value = "$password";
    document.querySelector('button[type="submit"]').click();
    """.trimIndent()

    webView.evaluateJavascript(jsCode, null)

我愿意通过单击按钮登录特定站点的不同方式。

Android Kotlin 网页视图

评论


答:

0赞 Codemaker2015 11/7/2023 #1

你能试试这样的东西吗?

import android.os.Bundle
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        webView = findViewById(R.id.webView)
        webView.settings.javaScriptEnabled = true

        val username = "your_username"
        val password = "your_password"

        val loginButton = findViewById(R.id.loginButton)
        loginButton.setOnClickListener {
            // Load the login page
            webView.loadUrl("http://example.com/login")
        }

        webView.webViewClient = object : WebViewClient() {
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                // Inject JavaScript to autofill and submit the login form
                val jsCode = """
                    document.querySelector('input[name="username"]').value = "$username";
                    document.querySelector('input[name="password"]').value = "$password";
                    document.querySelector('button[type="submit"]').click();
                """.trimIndent()
                webView.evaluateJavascript(jsCode, null)
            }
        }
    }
}