android webview 动态修改img src

  • h5:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>H5页面上传手机照片</title>
</head>
<body>
<script type="text/javascript">
    function previewFile() {
        // 仅限上传单张图片
        var file = document.querySelector('#imgFile').files[0];
        var reader = new FileReader();
        reader.addEventListener("load", function () {
            var imageNode = document.getElementById("up_image");
            imageNode.src = reader.result;  // 存储在本地的图片的base64编码
           ` imageNode.load();//必须加上,否则不会刷新`
            alert("result=" + imageNode.src);
        }, false);

        if (file) {
            reader.readAsDataURL(file);
        }
    }
</script>

<form action="">
    <!--    <p>图片1: <input type="file" name="uploadImg1"/></p>-->
    <!--    <p>图片2: <input type="file" name="uploadImg2"/></p>-->
    <!--    <input type="submit" value="Submit"/>-->

    <input accept="image/*" capture="camera" id="imgFile" name="imgFile" type="file"
           onchange="previewFile()"> <br/>
    <p></p>
    <img width="100px" height="100px" id="up_image"/>
</form>

</body>
</html>
  • android
        private void webViewClient(WebView webView) {
                    webView.setWebChromeClient(new WebChromeClient() {
            // For Android 3.0+
                        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
                mUploadFile = uploadMsg;
                openImageChooserOperator();
            }

            // For Android < 3.0
            public void openFileChooser(ValueCallback<Uri> uploadMsgs) {
                mUploadFile = uploadMsgs;
                openImageChooserOperator();
            }

            // For Android  > 4.1.1
            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
                mUploadFile = uploadMsg;
                openImageChooserOperator();
            }

            @Override
            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
                mUploadFiles = filePathCallback;
                openImageChooserOperator();
                //mUploadFiles.onReceiveValue(new Uri[]{Uri.parse("content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FCamera%2FIMG_20200901_074953.jpg")});
                //mUploadFiles.onReceiveValue(new Uri[]{Uri.parse("content://media/external/images/media/17714")});
                return true;
            }

            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Manager.getInstance().getUtils().showLog("message:" + message + "jsResult" + result.toString());
//                Toast.makeText(mActivity,"message:" + message,Toast.LENGTH_SHORT).show();
                return true;
            }

            @Override
            public void onPermissionRequest(PermissionRequest request) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    request.grant(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE});
                }
                super.onPermissionRequest(request);
            }
        });

private void webViewClient(WebView webView) {
        webView.setWebChromeClient(new WebChromeClient() {
            // For Android 3.0+
            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
                mUploadFile = uploadMsg;
                openImageChooserOperator();
            }

            // For Android < 3.0
            public void openFileChooser(ValueCallback<Uri> uploadMsgs) {
                mUploadFile = uploadMsgs;
                openImageChooserOperator();
            }

            // For Android  > 4.1.1
            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
                mUploadFile = uploadMsg;
                openImageChooserOperator();
            }

            @Override
            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
                mUploadFiles = filePathCallback;
                openImageChooserOperator();   
                return true;
            }
        });

public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == fileUploadRequestCode) {//图片上传
                Manager.getInstance().getUtils().showLog(data.getDataString());
                if (mUploadFile != null) {
                    Uri result = data == null ? null : data.getData();
                    mUploadFile.onReceiveValue(result);
                    mUploadFile = null;
                }

                if (mUploadFiles != null) {
                    Uri result = data == null ? null : data.getData();
                    mUploadFiles.onReceiveValue(new Uri[]{result});
                    mUploadFiles = null;
                }
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {
            if (requestCode == fileUploadRequestCode) {//图片上传
                if (mUploadFile != null) {
                    mUploadFile.onReceiveValue(null);
                    mUploadFile = null;
                }
                if (mUploadFiles != null) {
                    mUploadFiles.onReceiveValue(null);
                    mUploadFiles = null;
                }
            }
        }
    }

猜你喜欢

转载自blog.51cto.com/xuguohongai/2531822