Android 通过js 将assets下的图片回传给服务端html 的 Img

  1. 在 Android 端,使用 addJavascriptInterface() 方法将一个 Java 对象绑定到 WebView 中,以便在 JavaScript 中调用该对象的方法。例如:
webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidInterface"); 
  1. 创建一个 JavaScript 接口类,其中包含一个供 JavaScript 调用的方法。在该方法中,将 assets 目录下的图片转换为 Base64 格式,并将其传递给 JavaScript。例如:

public class JavaScriptInterface {
    @JavascriptInterface
    public String getImageData() {
        try {
             //app/src/main/assets/image.jpg
            InputStream inputStream = getAssets().open("image.jpg");
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            inputStream.close();
            return "data:image/jpeg;base64," + Base64.encodeToString(buffer, Base64.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
} 

在上述代码中,getImageData() 方法读取 image.jpg 图片文件,并将其内容转换为 Base64 格式的数据。然后将带有适当数据 URL 格式的 Base64 编码的图片数据返回给 JavaScript。请根据你的实际情况调整图片的文件名和路径。

  1. 在远程 HTML 页面的 JavaScript 代码中,通过调用 Android 接口的方法来获取图片数据,并将其赋值给 <img> 标签的 src 属性。例如:
<script>
    var img = new Image();
    img.src = window.AndroidInterface.getImageData();
    document.body.appendChild(img);
</script>

在上述代码中,window.AndroidInterface.getImageData() 调用了绑定在 WebView 上的 Android 接口的方法,并返回 Base64 编码的图片数据。然后将该数据赋值给新创建的 <img> 元素的 src 属性,并将其添加到页面中。

请确保 Android 端已经正确设置 WebView 的 WebSettings,允许 JavaScript 执行,并且 WebView 已经加载了远程 HTML 页面。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容