Android webview加载本地图片

原创 2013年11月25日 17:42:30

出于安全的考虑,一般情况下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的例子:

com.packagename.provider;
public class MyProvider extends ContentProvider { 
     @Override
     public ParcelFileDescriptor openFile(Uri uri, String mode){
        URI fileURI = URI.create( "file://" + uri.getPath() );
        File file = new File( fileURI );

        ParcelFileDescriptor parcel = null;
        try {
            parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
        } catch (FileNotFoundException e) {
            Log.e( TAG, "Error finding: " + fileURI + "\n" + e.toString() );
        }

        return parcel;

AndroidManifest.xml

 <provider
        android:name=".provider.MyProvider"
        android:authorities="com.packagename" />

You can then access your files which would normally be

 file://sdcard/Android/data/com.packagename/image.jpg

by using

 content://com.packagename/sdcard/Android/data/com.packagename/image.jpg

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] 使用广播接收器Braodcast Receiver 监听手机来电 去电 挂断的事

Braodcast Receiver顾名思义就是广播接收器,它和时间处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的。我们可以用Intent来启动...

Android4.4使用 webview控件报错nativeOnDrawfailed;clearing to background color

最近在整合 apk调用 flash的时候,里面用到 webview控件,然而还是每次打开应用都会提示如下错误:  W/AwContents(2825):  nativeOnDraw failed; ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Google浏览器如何加载本地文件

Chrome浏览器加载本地文件 一般来说,为了安全起见,浏览器是不能通过load方法来加载本地文件的,load方法只能加载远程服务器上的文件。 在浏览器默认的情况下,试图加载一个本地文件,...

Android与HTML5可交互常见问题

Android与HTML5可交互常见问题

Async pixel transfers not supported 和 Undefined

升级今年的客户端,发现在Android4.4以上的版本上出现webview界面无法显示,JavaScript无法交互。但是在4.4以下的版本中各个手机都运行正常   1、刚开始是第一次进去正常,在...
  • cmdkmd
  • cmdkmd
  • 2015-01-20 16:30
  • 4393

Android:你要的WebView与 JS 交互方式 都在这里了

前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图上述功能是由Android的WebView实现的,其中涉及到Android客户端与W...

Android 与JS交互 调用本地相册在Html页面显示图片

Android 与JS交互浅谈Android 与 JS 交互主要分为: JS 调用Android中的方法 Android首先要用WebView加载Html页面 -mWebView.getSetti...

webview html页面加载本地js及img src

我们的客户端软件主要部分用webview的表现形式来实现。当然这个东东有优点、缺点也不少。 今天,我们要解决的就是,如何从节省流量的角度来优化加载速度。 web页面部分,我们可能要用到jquery...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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