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

问题描述 投票:0回答:1

我正在创建一个 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 webview
1个回答
0
投票

你能尝试这样的事情吗

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)
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.