首页 > 解决方案 > 使用 webview 拍照/拍照

问题描述

我有以下代码可以在移动浏览器上顺利打开,并为我提供使用相机拍照或从图库上传照片的选项:

<input type="file" accept="image/*;capture=camera"/>

我正在加载相同的内容WebView,并进行了如下设置:

webView.webChromeClient = object : WebChromeClient() {

            override fun onShowFileChooser(
                webView: WebView,
                filePathCallback: ValueCallback<Array<Uri>>,
                fileChooserParams: FileChooserParams
            ): Boolean {
                var takePictureIntent: Intent? = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
                val contentSelectionIntent = Intent(Intent.ACTION_GET_CONTENT)
                contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE)
                contentSelectionIntent.type = "image/*"
                if (ContextCompat.checkSelfPermission(
                        ctx,
                        Manifest.permission.CAMERA
                    ) != PackageManager.PERMISSION_GRANTED
                ) {
                    ActivityCompat.requestPermissions(
                        activity,
                        arrayOf(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE),
                        0
                    )
                }

                val intentArray: Array<Intent?> = takePictureIntent?.let { arrayOf(it) } ?: arrayOfNulls(0)

                val chooserIntent = Intent(Intent.ACTION_CHOOSER)
                chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent)
                chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser")
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray)
                startActivity(chooserIntent)

                filePathCallback?.onReceiveValue(null)
                return true
            }
}

Image chooser正确打开如下:

在此处输入图像描述

但是,我有以下问题:

  1. 如果我用相机拍照,如何将新照片路径返回到 webview?
  2. 如果我从图库中挑选了一张照片,我该如何重新调整到 webview 的路径?

标签: androidandroid-webview

解决方案


推荐阅读