如何在Android WebView中拍照或选择图库文件

问题描述

我有一个角度组件,可以拍照或选择文件

enter image description here

文件上传效果很好,问题在于它不允许我拍照,我已经尝试过以各种方式修改代码,但是它不起作用。

如何进行调整以使两个选项均起作用,如何确定选择了哪个选项(拍照,选择文件)?

角度代码

HTML

<input
    #inputFile
    accept="image/*,application/pdf"
    type="file"
    (change)="loadFile($event)"
    style="display: none;"
    onclick="this.value = null"
/>
<input
    #cameraFile
    accept="image/*"
    capture="camera"
    type="file"
    (change)="loadFile($event)"
    style="display: none;"
    onclick="this.value = null"
/>

Ts

selectOption(opcion: any) {
    if (opcion.tipoArchivo === this.documentType.documento.idDocumento) {
        switch (opcion.opcion) {
            case MenuBottomSheet.ELEGIR_FOTO:
                this.fileChooser.nativeElement.click();
                break;
            case MenuBottomSheet.TOMAR_FOTO:
                this.cameraFile.nativeElement.click();
                break;
        }
    }
}

Códigoandroid

web_view?.webChromeClient = object: WebChromeClient() {
    override fun onShowFileChooser(webView: WebView?,filePathCallback: ValueCallback<Array<Uri>>?,fileChooserParams: FileChooserParams): Boolean {
        Log.d("onShowFileChooser ======> ","")
        super.onShowFileChooser(webView,filePathCallback,fileChooserParams)
        if (uploadMessage != null) {
            uploadMessage?.onReceiveValue(null)
            uploadMessage = null
        }
        uploadMessage = filePathCallback
        val intent: Intent = fileChooserParams.createIntent()
        try {
            startActivityForResult(intent,REQUEST_SELECT_FILE)
        } catch (e: ActivityNotFoundException) {
            uploadMessage = null
            return false
        }
        return true
    }
}

override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
    super.onActivityResult(requestCode,resultCode,data)
    if (resultCode == RESULT_OK && (requestCode == REQUEST_SELECT_FILE || requestCode == REQUEST_IMAGE_CAPTURE)) {
        if (uploadMessage == null) {
            return
        }
        uploadMessage?.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode,data))
        uploadMessage = null
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...