webview中的img标签加载Android本地的图片

来源:互联网 发布:心动网络 笔试题目 编辑:程序博客网 时间:2024/05/18 03:21

在网上查了很多教程,感觉很麻烦,各种方法,最后最忌实践很简单,主要是两步:

 WebSettings webSettings=webView.getSettings();        //允许webview对文件的操作        webSettings.setAllowUniversalAccessFromFileURLs(true);        webSettings.setAllowFileAccess(true);        webSettings.setAllowFileAccessFromFileURLs(true);

其次是路径的设置

String path= "file://"+Environment.getExternalStorageDirectory()+ File.separator+"123.jpg";

一定是file:///开头,注意是三个斜杠

下面是结果:

执行代码之前

执行代码之后


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调用Android        webSettings.setJavaScriptEnabled(true);        //设置编码方式        webSettings.setDefaultTextEncodingName("utf-8");        webView.setWebChromeClient(new chromClient());        //访问Android assets文件夹内的        String url="file:///android_asset/test.html";        //访问网页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){                //页面加载完成执行的操作                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);            }        });    }}



原创粉丝点击