Javascript 以编程方式从URL或本地存储设置输入图像文件类型值
我正在尝试在Android Webview中自动填写表单。目标是从URL或内部存储上传图像,但不需要用户手动完成。像Vendoo或ListPerfect这样的Chrome扩展能够成功地做到这一点。我希望通过将Java/Kotlin与Javascript结合使用,在Android Webview中实现相同的功能。以下是在chrome扩展中实现这一点的参考。 这是Depop表单的HTML输入部分Javascript 以编程方式从URL或本地存储设置输入图像文件类型值,javascript,java,android,jquery,chromium,Javascript,Java,Android,Jquery,Chromium,我正在尝试在Android Webview中自动填写表单。目标是从URL或内部存储上传图像,但不需要用户手动完成。像Vendoo或ListPerfect这样的Chrome扩展能够成功地做到这一点。我希望通过将Java/Kotlin与Javascript结合使用,在Android Webview中实现相同的功能。以下是在chrome扩展中实现这一点的参考。 这是Depop表单的HTML输入部分 <div data-testid="imageInputWrapper"
<div data-testid="imageInputWrapper" class="ImageInputstyles__Wrapper-sc-2l692w-11 ilMHzo">
<label class="ImageInputstyles__Label-sc-2l692w-0 qRxlC">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="23" viewBox="0 0 29 23" class="ImageInputstyles__Camera-sc-2l692w-3 bdakae">
<title>Upload an image</title>
<g fill="none" fill-rule="evenodd">
<path stroke="#999" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7.2 7.082v14h20v-14h-5.968L20.2 4.5h-6l-1.14 2.582z"></path>
<path stroke="#999" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.2 16.5a3 3 0 100-6 3 3 0 000 6z"></path>
<circle cx="6.65" cy="6.65" r="6.65" fill="#FFF"></circle>
<circle cx="6.7" cy="6.6" r="5.5" fill="#FF2300"></circle>
<path stroke="#FFF" stroke-linecap="square" d="M6.7 3.6v6m-3-3h6"></path>
</g>
</svg>
<p class="ImageInputstyles__HelpText-sc-2l692w-6 iGmhpY">Add a photo</p>
</div>
<input aria-describedby="error__images" aria-label="Upload an image" tabindex="0" type="file" multiple="" accept="image/jpeg, image/png" data-testid="imageInput" class="ImageInputstyles__Input-sc-2l692w-7 aosWu">
</label>
</div>
但是我得到的错误是,chromium:[INFO:CONSOLE(1)]“文件选择器对话框只能在用户激活时显示。”
。
那么,有没有办法通过编程方式将图像从URL或本地存储上传到input
字段
val script = "javascript:document.getElementsByClassName('ImageInputstyles__Label-sc-2l692w-0 qRxl')[0].click()"
depop_webview.evaluateJavascript(script
) { value -> Log.d(TAG, "onReceiveValue: $value") }
depop_webview.webChromeClient = object : WebChromeClient(){
override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams?): Boolean {
return super.onShowFileChooser(webView, filePathCallback, fileChooserParams)
}
}