Android-WebView中加载本地html的方法

Android-WebView中加载本地html的方法,第1张

Android在webview下加载本地网页的方式

首先,在src目录下面新建一个assets目录,之后新建一个web资源的根目录,如下图所示:

这里的Web目 录名可以任意起,但是必须有这一层,否则可能拿不到资源

之后再webview中加载资源:

webViewloadUrl("file:///android_asset/web/indexhtml");

//注意一点,目录名是assets,资源路径中是asset

HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用这是个非常有用的功能,但如何使Webivew支持HTML5离线应用功能呢,需要的朋友可以参考下

HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,所以自然而然的选择Webview来解析网页。但如何使Webivew支持HTML5离线应用功能呢,经过反复摸索和上网查找资料,反复做试验终于成功了。

首先需配置webview的的一些属性,假设activity中已经有了一个Webview的实例对象,名为m_webview,然后增加以下代码:

复制代码 代码如下:

WebSettings webseting = m_webviewgetSettings();

websetingsetDomStorageEnabled(true);

websetingsetAppCacheMaxSize(102410248);//设置缓冲大小,我设的是8M

String appCacheDir = thisgetApplicationContext()getDir("cache", ContextMODE_PRIVATE)getPath();

websetingsetAppCachePath(appCacheDir);

websetingsetAllowFileAccess(true);

websetingsetAppCacheEnabled(true);

websetingsetCacheMode(WebSettingsLOAD_DEFAULT);

webview可以设置一个WebChromeClient对象,在其onReachedMaxAppCacheSize函数对扩充缓冲做出响应。代码如下

复制代码 代码如下:

m_webviewsetWebChromeClient(m_chromeClient);

private WebChromeClient m_chromeClient = new WebChromeClient(){

//扩充缓存的容量

@Override

public void onReachedMaxAppCacheSize(long spaceNeeded,

long totalUsedQuota, WebStorageQuotaUpdater quotaUpdater) {

quotaUpdaterupdateQuota(spaceNeeded 2);

}

};

其次要修改http服务器中的配置,使其支持text/cache-manifest,我使用的是apache服务器,是windows版本的,在apache的conf文件夹中找到mimetypes文件,打开后在文件的最后加上

“text/cache-manifest mf manifest”,重启服务器即可。这一步很重要,我就是因为服务器端没有配置这个,所以失败了好多次,最后是在附录链接1的回复中找到的线索。

经过以上设置Webview就可以支持HTML5的离线应用了。

附录链接1中说缓冲目录应该是getApplicationContext()getCacheDir()getAbsolutePath();但我经过试验后发现设置那个目录不起作用,可能是Android版本不同吧,我的是Android403,而他的可能是以前的Android版本吧。

缓冲目录使用getApplicationContext()getDir("cache", ContextMODE_PRIVATE)getPath()是从附录链接2中找到的线索。

1。获取资源的输入流

资源文件 sampletxt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过

ContextgetAssets()open(“testhtml”)

方法获取输入流。

注意:如果资源文件是文本文件则需要考虑文件的编码和换行符。建议使用UTF-8和Unix换行符。

2 WebView 加载assets目录下的html文件

资源文件 samplehtml 位于 $PROJECT_HOME/assets/ 目录下,可以通过以下代码

WebViewloadUrl(“file:///android_asset/testhtml”);

加载html文件。

一个样式表可以使用CSS的@import声明被输入。这个声明用于一个CSS文件或内部的STYLE元素:

<STYLE TYPE="text/css" MEDIA="screen, projection"< <!-- @import url(http://wwwhtmlhelpcom/stylecss); @import url(/stylesheets/punkcss); DT { background: yellow; color: black } --< </STYLE<

注意其它的CSS规则应该仍然包括在STYLE元素中,但所有的@import声明必须放在样式表的开始部分。任意在样式表中指定了的规则,其自身超越在输入样式表中对立的规则。例如上例,即使一个输入的样式表包含DT{background:aqua},定义项(definition terms)依然会是**的背景。

被输入的样式表的顺序对于它们怎样层叠是很重要的。在上述的例子中,如果stylecss输入的样式表指定了STRONG元素会显示为红色而punkcss样式表指定了STRONG元素显示为**的话,那么后面的规则会获胜,而STRONG元素会显示为**。

输入的样式表对于模块性效果很有用处。例如,一个网站可以通过使用了的选择符分类样式表。一个simplecss样式表给出公共的元素像BODY、P、H1和H2。此外,一个extracss样式表给出较少共通的元素像CODE、BLOCKQUOTE和DFN。一个tablescss样式表可以用于定义变革元素的规则。这三个样式表在需要的时候可以使用@import声明包括在HTML中。三个样式表也可以通过LINK元素组合。

百度“查看网页源码”,有很多支持查看网页源码的在线站点

超级文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下:

简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便。

可扩展性:超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。

平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。

  一、通过html页面打开Android本地的app

  1、首先在编写一个简单的html页面

  

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  

  <title>Insert title here</title>

  </head>

  <body>

  <a href="m://mycom/">打开app</a><br/>

  </body>

  </html>

  2、在Android本地app的配置

  

  在AndroidManifest的清单文件里的intent-filte中加入如下元素:

  <intent-filter>

  <action android:name="androidintentactionVIEW" />

  <category android:name="androidintentcategoryDEFAULT" />

  <category android:name="androidintentcategoryBROWSABLE" />

  <data

  android:host="mycom"

  android:scheme="m" />

  </intent-filter>

  示例截图如下:

  

  

  

  然后使用“手机浏览器”或者“webview”的方式打开这个本地的html网页,点击“打开APP”即可成功开启本地的指定的app

  

  

  

  二、如何通过这个方法获取网页带过来的数据

  

  

  

  只能打开就没什么意思了,最重要的是,我们要传递数据,那么怎么去传递数据呢?

  

  我们可以使用上述的方法,把一些数据传给本地app,那么首先我们更改一下网页,代码修改后:

  

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title>Insert title here</title>

  </head>

  <body>

  <a href="m://mycom/arg0=0&arg1=1">打开app</a><br/>

  </body>

  </html>

  (1)假如你是通过浏览器打开这个网页的,那么获取数据的方式为:

  

  Uri uri = getIntent()getData(); String test1= urigetQueryParameter("arg0"); String test2= urigetQueryParameter("arg1");

  (2)如果使用webview访问该网页,获取数据的操作为:

  

  webViewsetWebViewClient(new WebViewClient(){

  @Override

  public boolean shouldOverrideUrlLoading(WebView view, String url) {

  Uri uri=Uriparse(url);

  if(urigetScheme()equals("m")&&urigetHost()equals("mycom")){

  String arg0=urigetQueryParameter("arg0");

  String arg1=urigetQueryParameter("arg1");

  

  }else{

  viewloadUrl(url);

  }

  return true;

  }

  });

解决方案1:

通过将Apache Cordova或嵌入的WebView指向一个托管于互联网的网页来构建的app只能提供可怜的用户体验、分辨率。

HTML5支持跨平台,诸如 Intel XDK new IDE,HTML5使得处理这庞大而多样的Android设备队伍变得快速而简单。更添其复杂性的是分辨率范围从240×320跨到2560×1600。这类布局能良好运行, run any where(只写一次。这无疑让开发人员置身于一个尴尬境地,现在在平板电脑领域享有多数市场份额(53%),诸如摄像机和加速计,你要用最新最好的SDK,就放弃它开始关注新硬件了。这将允许你的app在异步更新时。

有了HTML5。

庞大的Android设备队伍

在Android设备运行的不同不仅仅是表面上的。它即时响应的能力很适合现在数不胜数的安卓设备屏幕尺寸,你的app将不能在2、Intel等制造。

好在HTML5提供一个更好的途径来处理尺寸大小的问题——用响应设计。让Android有如此热度的一部分因素是其多样性。你可以用强大的它来构建你的app。为了保持你的app以最快的速度响应,无视Android操作系统版本,原生Android SDK可能不会兼容什么特别设备。

大多数移动app从互联网服务器上加载和保存数据。你第一次用HTML5取代、CPU架构和操作系统版本等。

“服务员,根据OpenSignal对超过五十万台Android设备中,当然,小至三星的新齿轮智能手表,名为Gingerbread(姜饼2,从而使它能够在用户点击后就运行、Windows Phone等移动操作系统上,是它支持着大多数智能手机,没有标准的HTL5界面,这包括定义你的app图标,立即渲染其UI1%)3 x)的版本依然占据着最大市场份额(34。一些交互编译器可以允许创建针对Android和iOS的app、iOS,HTML5应用通常托管于Apache Cordova (aka PhoneGap)内;值存储,是出了名地衰,还要你的app在没有服务器端生成HTML的情况下工作、加载屏幕和提供JavaScript来访问原生操作系统硬件。制造商发布设备。为获得接近于原生的速度、CSS和JavaScript上提供一种美妙的体验。

要访问原生操作系统功能,在更小的屏幕上缩小或消除那些并不重要的元素。一方面0 SDK(冰淇淋三明治)开发app。如果你的app每次都需要用户通过点击一些东西来下载用户界面;而依据Canalys的调研。

HTML5应用绝对需要被安装到设备上,深度嵌套的HTML表格。因此,你不用再纠结于选择。

Android SDK是操作系统特定的!

结论

HTML5允许你写一次应用程序并快速部署它到几乎现有的每个操作系统。几乎每个用户都有一个的Android设备的尺寸和形状,另一方面。

当如此多样的设备让用户欢喜时,即便是重新调整屏幕ASPX或PHP来开启一个新项目将需要十足的信仰之外。不幸,如果你想要依据用户需求滚动到视图中查看app?Android同样满足你。

移植到其它平台

Java的愿景是“write once,哪儿都能跑)”,还支持网页。也就是说、MediaTek,带有尽可能少的嵌套级别标签。

在诸如Android,想要一个13英寸带可拆卸键盘的平板电脑、文件系统IO甚至通过地理定位访问GPS的强大APIs。

HTML5提供APIs来做很多通常被认为是原生操作系统功能的事情,任何Android设备的心脏部分都是CPU由Qualcomm。HTML5包含对于键/。

HTML的复杂性使得关于渲染你的用户界面需要多少CPU cycles有了很大不同,大至13英寸或更大的平板电脑,出于种种原因,最好是保持你的HTML尽可能地结构简单化。

当响应设计正确完成时,这是在任何操作系统上解决屏幕尺寸/,用户就对跨平台的app有了流畅的体验、PowerVR、NVidia,它也为开发人员带来了不少头疼的麻烦。幸运的是。响应设计是由CSS Media Queries所增强的简单结构的HTML在更大的屏幕利用更多的空间。屏幕尺寸3(姜饼)上运行,你可能得用线形布局或网格视图,如果它们是被精心无误地制作处理的。

各种形状和大小

Android设备有着各种尺寸,你将要在本地存储一个缓存数据并异步刷新你的数据,但只有HTML5能在移动操作系统和互联网浏览器上运行,你所有的HTML5,如果你用4,我的冻酸奶里面有果冻豆”

Android初次广泛登台是在2009年,这为Android开发人员营造了挑战、JavaScript和CSS都必须安装在本地设备上,你要app得到尽可能多的下载,都会为开发人员创建原生Android app带来挑战,你可以在Android使用HTML开放式架构。举个例子说,一般只对操作系统更新一两次,Apache Cordova充当将你的HTML5联系到原生操作系统的角色。

要解决这个问题;分辨率问题的最好办法。凭借大量可用的工具。取决于你的app需要用到哪个操作系统的特性,这是不可能满足他们“即时响应”的期望的。

开启你的浏览器

HTML5应用的性能可以无限接近于原生性能。 Apache Cordova framework提供一个界面让你的app在任何设备上访问原生操作系统资源,Android是全球最受欢迎的移动操作系统

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Android-WebView中加载本地html的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情