Android開發(fā)實現(xiàn)webview中img標簽加載本地圖片的方法
本文實例講述了Android開發(fā)實現(xiàn)webview中img標簽加載本地圖片的方法。分享給大家供大家參考,具體如下:
在網(wǎng)上查了很多教程,感覺很麻煩,各種方法,最后實踐很簡單,主要是兩步:
WebSettings webSettings=webView.getSettings(); //允許webview對文件的操作 webSettings.setAllowUniversalAccessFromFileURLs(true); webSettings.setAllowFileAccess(true); webSettings.setAllowFileAccessFromFileURLs(true);
其次是路徑的設置
String path= "file://"+Environment.getExternalStorageDirectory()+ File.separator+"123.jpg";
一定是file:///開頭,注意是三個斜杠
下面是結(jié)果:
執(zhí)行代碼之前
執(zhí)行代碼之后
html代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>Title</title> </head> <body> <img id="img" alt="上海鮮花港 - 郁金香" style="width: 100%;height: 100%"/> <script> function aa(path){ alert(path); var img=document.getElementById("img"); img.src=path; } </script> </body> </html>
Android代碼
package com.example.a5.myapplication; import android.os.Environment; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import java.io.File; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView= (WebView) findViewById(R.id.webView); WebSettings webSettings=webView.getSettings(); //允許webview對文件的操作 webSettings.setAllowUniversalAccessFromFileURLs(true); webSettings.setAllowFileAccess(true); webSettings.setAllowFileAccessFromFileURLs(true); //用于js調(diào)用Android webSettings.setJavaScriptEnabled(true); //設置編碼方式 webSettings.setDefaultTextEncodingName("utf-8"); webView.setWebChromeClient(new chromClient()); //訪問Android assets文件夾內(nèi)的 String url="file:///android_asset/test.html"; //訪問網(wǎng)頁Html // String url="http://192.168.1.121:8080/jsandroid/index.html"; runWebView(url); } private class chromClient extends WebChromeClient{ @Override public void onProgressChanged(WebView view, int newProgress) { if(newProgress==100){ //頁面加載完成執(zhí)行的操作 String path= "file://"+Environment.getExternalStorageDirectory()+ File.separator+"123.jpg"; String action="javascript:aa('"+path+"')"; new AlertDialog.Builder(MainActivity.this) .setMessage(action) .show(); runWebView(action); } super.onProgressChanged(view, newProgress); } } private void runWebView(final String url){ runOnUiThread(new Runnable() { @Override public void run() { webView.loadUrl(url); } }); } }
更多關于Android相關內(nèi)容感興趣的讀者可查看本站專題:《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android布局layout技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設計有所幫助。
相關文章
android實現(xiàn)定時拍照并發(fā)送微博功能
這篇文章主要為大家詳細介紹了android實現(xiàn)定時拍照并發(fā)送微博功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06Android異步加載數(shù)據(jù)和圖片的保存思路詳解
這篇文章主要介紹了Android異步加載數(shù)據(jù)和圖片的保存思路詳解的相關資料,需要的朋友可以參考下2016-04-04Jetpack Compose自定義動畫與Animatable詳解
在今年的Google/IO大會上,亮相了一個全新的 Android 原生 UI 開發(fā)框架-Jetpack Compose, 與蘋果的SwiftIUI一樣,Jetpack Compose是一個聲明式的UI框架,這篇文章主要介紹了Jetpack Compose自定義動畫與Animatable2022-10-10