Android 通過(guò)js 將assets下的圖片回傳給服務(wù)端html 的 Img

  1. 在 Android 端,使用 addJavascriptInterface() 方法將一個(gè) Java 對(duì)象綁定到 WebView 中,以便在 JavaScript 中調(diào)用該對(duì)象的方法。例如:
webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidInterface"); 
  1. 創(chuàng)建一個(gè) JavaScript 接口類,其中包含一個(gè)供 JavaScript 調(diào)用的方法。在該方法中,將 assets 目錄下的圖片轉(zhuǎn)換為 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 圖片文件,并將其內(nèi)容轉(zhuǎn)換為 Base64 格式的數(shù)據(jù)。然后將帶有適當(dāng)數(shù)據(jù) URL 格式的 Base64 編碼的圖片數(shù)據(jù)返回給 JavaScript。請(qǐng)根據(jù)你的實(shí)際情況調(diào)整圖片的文件名和路徑。

  1. 在遠(yuǎn)程 HTML 頁(yè)面的 JavaScript 代碼中,通過(guò)調(diào)用 Android 接口的方法來(lái)獲取圖片數(shù)據(jù),并將其賦值給 <img> 標(biāo)簽的 src 屬性。例如:
<script>
    var img = new Image();
    img.src = window.AndroidInterface.getImageData();
    document.body.appendChild(img);
</script>

在上述代碼中,window.AndroidInterface.getImageData() 調(diào)用了綁定在 WebView 上的 Android 接口的方法,并返回 Base64 編碼的圖片數(shù)據(jù)。然后將該數(shù)據(jù)賦值給新創(chuàng)建的 <img> 元素的 src 屬性,并將其添加到頁(yè)面中。

請(qǐng)確保 Android 端已經(jīng)正確設(shè)置 WebView 的 WebSettings,允許 JavaScript 執(zhí)行,并且 WebView 已經(jīng)加載了遠(yuǎn)程 HTML 頁(yè)面。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容