Android开发实现webview中img标签加载本地图片的方法
作者:GISuuser 发布时间:2023-03-15 01:33:40
标签:Android,webview,本地图片
本文实例讲述了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程序设计有所帮助。
来源:http://blog.csdn.net/gisuuser/article/details/77721312


猜你喜欢
- Java多态成员访问的特点多态概要多态是面向对象编程的三个特性之一,这里不展开做过多介绍,有机会专门写一个关于继承,封装,多态三大特性的文章
- 前言在上一篇文章中《Notification自定义界面》中我们实现了自定义的界面,那么我们该怎么为自定义的界面添加点击事件呢?像酷狗在通知栏
- public static void main(String args[]) {Map<String, Object> map
- AndroidStudio kotlin配置安装插件File -> Settings -> Plugins -> Brow
- 使用JDBC时,我们都会很自然得使用下列语句:Class.forName("com.mysql.jdbc.Driver"
- __intSumintSum 函数可用于计算两个或多个整数值的总和。引用名称是可选的, 但它不能是有效的整数。{__intSum(2,5,M
- 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制
- 前言:在Java面试中,线程的状态也是被经常考察的知识点,今天我们就来聊一聊线程状态的那些事!线程在JVM中的状态查看线程在JVM中有哪些不
- 1、很多资料说,添加以下代码,可以隐藏地址栏,但我试了很多次,貌似不成功啊。<meta name="apple-mobile
- 1.类成员与方法的可见性最小化举例:如果是一个private的方法,想删除就删除如果一个public的service方法,或者一个publi
- 前言今天记录一个前段时间遇到的一个小问题的解决方法, 跨域!!!相信跨域这个问题, 做开发的或多或少都遇到过, 而且已经有很多博主已经分享了
- Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表达式和StreamAPI。这两者也
- 单例模式有一下特点:1、单例类只能有一个实例。2、单例类必须自己自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例模式确
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下1.RandomAccessFileRandomAcce
- Shiro 是Shiro 是一个 Apache 下的一开源项目项目,旨在简化身份验证和授权。 1:shiro的配置,通过maven
- 某天突然发现idea非常重要的快捷键ctrl+shift+f无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给
- 页面提交请求参数有两种,一种是form格式提交,一种json格式提交通常情况下我们使用的都是form格式提交的数据,数据格式:k=v&
- 一. 类型转型将一个类型转换成另一个类型的过程被称为类型转换。 我们所说的对象类型转换,一般是指两个存在继承关系的对象,而不是任意类型的对象
- 1、判断实体对象是否为空2、判断对象所有属性是否为空3、特别注意,实体类中如果有基本数据类型,会影响判断package com.liuxd.
- 栈的变化规则:1、方法调用会导致栈的生长,具体包括两个步骤:一、插入方法返回地址(下图中的Fn:);二、将实际参数按值(可以使用ref或ou