- 在 Android 端,使用 addJavascriptInterface() 方法将一个 Java 对象绑定到 WebView 中,以便在 JavaScript 中调用该对象的方法。例如:
webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidInterface");
- 创建一个 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。请根据你的实际情况调整图片的文件名和路径。
- 在远程 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 页面。