处理文件选择器 android WebViews

Bno*_*ise 2 android webview

图像

我有一个问题,伙计们。我有一个webView应用程序。应用程序内部有一个按钮,允许用户从设备中选择文件并上传到 api。一切都通过网络处理。问题是,在webView应用程序上,点击按钮时,没有任何反应,但是,当我尝试使用 Chrome 浏览器或浏览器应用程序时,它运行良好。

我需要做什么才能确保它与 Chrome 浏览器的工作方式相同?我不想在本地处理此功能,因为这是我在网上看到的唯一解决方案。无论如何,我尝试这样做,但它不会弹出这些文件选项,如图所示

有没有更简单的方法来处理这个问题?

小智 6

尝试这个:

private var filePathCallback: ValueCallback<Array<Uri>>? = null

override fun onCreate(savedInstanceState: Bundle?) {
        webView.webChromeClient = object: WebChromeClient() {
            override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams?): Boolean {
                startActivityForResult(fileChooserParams?.createIntent(), CHOOSE_FILE_REQUEST_CODE)
                this@MainActivity.filePathCallback = filePathCallback
                return true
            }
        }
    }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        when (requestCode) {
            CHOOSE_FILE_REQUEST_CODE -> {
                if (resultCode == Activity.RESULT_OK) {
                    filePathCallback?.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data))
                    filePathCallback = null
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)