`
zhanghan
  • 浏览: 192596 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

android手机开发 使用webkit时 远程页面引用本地资源

阅读更多

仅提供引用android工程中assets目录下资源的方法。

如果要引用sdcard上的资源,代码中也给出了参考。自己改

 

主要就是提供一个ContentProvider,并修改在页面中的引用为content://你的URI前缀/实际的地址

如:

<img src="content://com.xxxxx.localfile/icon.png"/>

 

贴代码吧

package com.xxxxxxx;

import java.io.FileNotFoundException;
import java.io.IOException;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.net.Uri;

/**
 * 加载本地文件的内容提供者
 * 
 * @author a7
 * 
 */
public class LocalFileContentProvider extends ContentProvider {

	private static final String URI_PREFIX = "content://com.xxxxxx.localfile";

	public static String constructUri(String url) {
		Uri uri = Uri.parse(url);
		return uri.isAbsolute() ? url : URI_PREFIX + url;
	}

	@Override
	/**
	 * 直接读取程序中的资源文件<br>
	 * 取sd卡文件实现openfile方法即可,需要用到ParcelFileDescriptor 
	 * 
	 */
	public AssetFileDescriptor openAssetFile(Uri uri, String mode)
			throws FileNotFoundException {
		// TODO Auto-generated method stub
		AssetManager am = getContext().getAssets();
		String path = uri.getPath().substring(1);
		try {
			AssetFileDescriptor afd = am.openFd(path);
			return afd;
		} catch (IOException e) {
		}
		return super.openAssetFile(uri, mode);
	}

	@Override
	public boolean onCreate() {
		return true;
	}

	@Override
	public int delete(Uri uri, String s, String[] as) {
		throw new UnsupportedOperationException(
				"Not supported by this provider");
	}

	@Override
	public String getType(Uri uri) {
		throw new UnsupportedOperationException(
				"Not supported by this provider");
	}

	@Override
	public Uri insert(Uri uri, ContentValues contentvalues) {
		throw new UnsupportedOperationException(
				"Not supported by this provider");
	}

	@Override
	public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {
		throw new UnsupportedOperationException(
				"Not supported by this provider");
	}

	@Override
	public int update(Uri uri, ContentValues contentvalues, String s,
			String[] as) {
		throw new UnsupportedOperationException(
				"Not supported by this provider");
	}

}

 

 

分享到:
评论

相关推荐

    Android WebKit HTML主资源加载过程

    `clearHelpers()` 方法的作用是清理当前页面的对话框(dialog)、输入法等组件,以确保加载新页面时不会受到旧页面元素的影响。 ```java // BrowserFrame.java public void loadUrl(String url, Map, String&gt; ...

    简易web浏览器,基于安卓Webkit开发的,可以看看。

    综上所述,基于安卓Webkit的简易Web浏览器开发涉及了Android编程、WebView组件的使用、用户界面设计以及安全性和性能优化等多个方面。通过不断学习和实践,开发者可以创建出功能完善、用户体验优秀的Web浏览器应用。...

    Webkit_webkit浏览器_webkit_android_

    这个"Webkit_webkit浏览器_webkit_android_"的项目是针对初学者设计的,旨在帮助他们理解如何在Android平台上利用Webkit技术构建一个简单的web浏览器应用。 首先,我们要了解Webkit的核心功能。Webkit负责解析HTML...

    Android 浏览器(基于WebKit) 源代码

    在Android系统中,内置的浏览器是基于开源的WebKit渲染引擎构建的。...通过深入学习和理解这部分源代码,开发者不仅可以提升对Android平台和WebKit的理解,还能为开发更高效、安全的Web应用打下坚实基础。

    android的webkit介绍

    2. **加载网页**: 使用 `loadUrl()` 方法加载本地或远程的网页。 3. **设置 JavaScript 支持**: 通过 `getSettings().setJavaScriptEnabled(true)` 开启 JavaScript 支持。 4. **JavaScript 交互**: 使用 `...

    android4.0.1 webkit图

    在Android 4.0.1版本中,WebKit是系统内核的重要组成部分,它是一个开源的网页渲染引擎,负责...对于开发Android应用,特别是涉及到WebView的项目,理解并掌握这些知识点至关重要,能有效提升应用的性能和用户体验。

    Webkit,Android Browser的UML分析

    例如,当用户点击一个链接时,Android Browser会通过WebKitBridge向Webkit发送消息,Webkit解析请求,加载页面,并将渲染结果回传给Android Browser显示。 Android Browser基于Webkit构建,它提供了一个原生的框架...

    Android_WebView、Webkit内核深入讲解

    Android WebView 与 WebKit 内核深入讲解 Android WebView 是 Android 平台上的一种...了解了 Android WebView 和 WebKit 内核的工作机理,我们可以更好地使用它们来开发移动应用程序,提高应用程序的性能和安全性。

    移动通信技术Android手机开发

    移动通信技术在Android手机开发中扮演着至关重要的角色,因为Android是目前全球最广泛使用的智能手机操作系统之一。Android手机开发涉及的领域广泛,包括系统层、应用程序层以及与硬件的交互等。以下是对Android开发...

    android开发揭秘PDF

    11.1 手机游戏开发简介 11.2 游戏框架设计 11.3 地图设计 11.4 主角设计 11.5 图层管理器 11.6 游戏音效 11.7 游戏存档 11.8 小结 第四部分 高级篇 第12章 AndroidOpenGL开发 基础 12.1 OpenGL简介 12.2 多边形 ...

    android中嵌入本地html

    WebView是Android提供的一种用于展示网页内容的控件,它可以加载远程或本地的HTML资源,使得开发者可以在Android应用中展示丰富的网页交互内容。 **1. WebView的基本使用** WebView的使用首先需要在AndroidManifest...

    Android 2.3 WebKit流程分析图

    Android 2.3 WebKit流程分析图

    Android Webkit

    苹果的Safari、谷歌的Chrome、诺基亚S60平台的默认浏览器、苹果手机的默认浏览器以及Android手机的默认浏览器均采用了Webkit作为其浏览器内核。Webkit因其高效、开放和兼容性而受到广泛认可,与Gecko(火狐浏览器...

    android webkit 内核

    **Android WebKit 内核详解** 在Android操作系统中,WebKit是一种关键的组件,它负责处理网页内容并提供渲染引擎,使应用程序能够展示和交互与基于Web的界面。Android的WebKit内核是开源项目WebKit的分支,它为...

    Android项目源码基于Webkit的新手级浏览器

    - 设置缓存策略:可以使用`setCacheMode()`来控制如何处理网络请求,比如离线时使用本地缓存。 3. **WebChromeClient与WebViewClient的区别** - `WebChromeClient`主要用于处理JavaScript的对话框(如alert()、...

    WebKit for Android

    由于移动设备资源有限,WebKit for Android 针对性能进行了优化。例如,使用硬件加速来提升渲染速度,支持离线存储(Web Storage 和 App Cache),以及通过 WKWebView(WebKit 的更新版本)引入的更高效的 ...

    Android4.1 WebKit流程分析图

    Android4.1 WebKit流程分析图包括 详细的网络请求流程,下载流程,代理流程

Global site tag (gtag.js) - Google Analytics