如何将字符串注入 Android WebView

How to inject a String into Android WebView

本文关键字:Android WebView 注入 字符串      更新时间:2023-09-26

我正在加载一个简单的网页,其中包含一个名为"AddSerialNum"的文本字段

<form>
Serial Number: <input type="text" name="AddSerialNum">
</form>

然后我尝试用我从 Android 中的条形码扫描结果中获得的字符串填充该字段:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        String contents = null;
        //Call Clipboard and assign service to var. 
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                //Set contents = to scan result
                contents = data.getStringExtra("SCAN_RESULT");
                //Format scan result
                @SuppressWarnings("unused")
                String format = data.getStringExtra("SCAN_RESULT_FORMAT");
                //Copy Data to clipboard
                ClipData clip = ClipData.newPlainText("serial", contents);
                clipboard.setPrimaryClip(clip); 
                //Toast - message states copy was successful with serial number
                Toast.makeText(this, "Copied " +contents , Toast.LENGTH_LONG).show();

                // Handled a successful scan
                //Put the results in the box!
        browser.loadUrl("javascript:document.getElementByID('AddSerialNum').value = '"+contents+"';");

            } else if (resultCode == RESULT_CANCELED) {
                // Cancellation action
            }
        }
    } 

吐司通知出现,条形码的序列号作为主剪辑复制到剪贴板,但为什么不填写 html 文件上的表单?

我觉得我错过了什么,但我的眼睛很疲倦,这让我感到沮丧。有人知道如何提供帮助吗?

提前感谢!

自己找到了答案。

应使用以下代码。

browser.loadUrl("javascript:document.forms[0].AddSerialNum.value = '"+contents+"';");

似乎您必须按节点导航到该字段,而不仅仅是最后一个字段。