Android webview加载本地图片

转载 2015年07月07日 17:14:24

出于安全的考虑,一般情况下webview并不允许网页读取和操作网页文件所在文件夹外的文件。

在网上搜索后,发现有3种可行的方法:

1、使用WebView自身的资源拦截与回调来实现该功能;
WebView的shouldInterceptRequest回调从API 11才开始引入,所以使用该方法不能兼容2.2与2.3的系统;

2、img的src使用base64的编码格式,这种方法会造成html文件较大,轻量的网页可以考虑使用;

3、img的src使用content协议,通过ContentProvider来进行提供相应资源; 

方法2和方法3都可以兼容2.x的系统


方法3的例子:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. com.packagename.provider;  
  2. public class MyProvider extends ContentProvider {   
  3.      @Override  
  4.      public ParcelFileDescriptor openFile(Uri uri, String mode){  
  5.         URI fileURI = URI.create( "file://" + uri.getPath() );  
  6.         File file = new File( fileURI );  
  7.   
  8.         ParcelFileDescriptor parcel = null;  
  9.         try {  
  10.             parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);  
  11.         } catch (FileNotFoundException e) {  
  12.             Log.e( TAG, "Error finding: " + fileURI + "\n" + e.toString() );  
  13.         }  
  14.   
  15.         return parcel;  

AndroidManifest.xml

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <provider  
  2.        android:name=".provider.MyProvider"  
  3.        android:authorities="com.packagename" />  

You can then access your files which would normally be

<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> file</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">:</span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: gray; background-color: transparent;">//sdcard/Android/data/com.packagename/image.jpg</span></code>

by using

<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> content</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">:</span><span class="com" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: gray; background-color: transparent;">//com.packagename/sdcard/Android/data/com.packagename/image.jpg</span></code>

So essentially replace file:// with content://com.packagename


http://stackoverflow.com/questions/11303118/android-set-a-local-image-to-an-img-element-in-webview

Android使用WebView加载本地图片终极大杀招

WebView 主要调用三个方法:loadUrl、loadData、loadDataWithBaseURL。1、loadUrl 直接加载网页、图片并显示。(本地或是网络上的网页、图片、g...
  • iloveaman
  • iloveaman
  • 2016年04月14日 13:12
  • 3902

android WebView加载html 并 引用本地资源(图片、字体库)

本文介绍如何用android WebView加载html代码,并在html内引用apk里的资源文件,例如图片、字体库等。 先说一般情况,文件夹有html、ttf字库、图片 html代码如下...
  • kkmike999
  • kkmike999
  • 2015年03月14日 22:09
  • 4847

Android 4.4 以上 Webview 中显示本地图片

本文主要介绍Android 4.4 以上 Webview 中显示本地图片,请看文章!
  • itluochen
  • itluochen
  • 2016年11月29日 10:03
  • 1120

android Webview加载本地图片,自适应布局大小

  • 2016年06月20日 11:16
  • 14KB
  • 下载

android webview加载gif图片

  • 2016年06月22日 16:06
  • 21.05MB
  • 下载

android webView加载html 并引用本地资源(图片、字体库)

  • 2015年03月14日 22:07
  • 298KB
  • 下载

Android实现WebView图片缓存,替换加载前默认图片的样式

  • 2013年03月11日 20:35
  • 1.52MB
  • 下载

android WebView加载html 并 引用本地资源(图片、字体库)

本文介绍如何用android WebView加载html代码,并在html内引用apk里的资源文件,例如图片、字体库等。 先说一般情况,文件夹有html、ttf字库、图片 html代码如下...
  • kkmike999
  • kkmike999
  • 2015年03月14日 22:09
  • 4847

七步完成Android Webview图片加载

【IT168技术   】在本教程中,我们将一步步学习如何使用Android中的WebView控件去展现图片,并且进行相关的参数设置,也会学习各种将图片导入到WebView的参数,包括从其他web站点...
  • kangkang952433636
  • kangkang952433636
  • 2012年07月17日 10:46
  • 157

Android中WebView加载Html中的图片添加点击事件

基本的思路: (1)WebView来加载HTML。 (2)向HTML中注入JavaScript,利用JavaScript来调用Android中的方法(执行一些跳转的操作等等)。  首先你必须有一...
  • SoulOfAndroid
  • SoulOfAndroid
  • 2014年11月25日 15:53
  • 4940
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android webview加载本地图片
举报原因:
原因补充:

(最多只允许输入30个字)