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

xlpyo6sf  于 2023-11-21  发布在  Kotlin
关注(0)|答案(1)|浏览(137)

我希望创建一个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)

字符串
我接受不同的方式登录到一个特定的网站与一个按钮点击。

smdncfj3

smdncfj31#

你能试试这样吗,

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)
            }
        }
    }
}

字符串

相关问题