Android开发实现webview中img标签加载本地图片的方法

本文实例讲述了Android开发实现webview中img标签加载本地图片的方法。分享给大家供大家参考,具体如下:

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

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);

}

});

}

}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

以上是 Android开发实现webview中img标签加载本地图片的方法 的全部内容, 来源链接: utcz.com/z/344708.html

回到顶部