我的项目10:Android的webview支持HTML5的离线应用功能详细配置

因为需要,我要在andriod手机上用webview给我的HTML5项目加一个壳,但第一次将项目封装进andriod里面时,我测试输出的alert尽然是不支持HTML5 web缓存,这让我很郁闷,在网上找了了一些资料看了一下,测试了几次终于通了,因为我不是搞andriod的,所以就不详细介绍了,把代码分享给大家:

MainActivity.java类:

package com.example.test;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
WebView webview;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webview = (WebView) findViewById(R.id.webView1);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new HelloWebViewClient());
    webview.loadUrl("file:///android_asset/indexfuza.html");
    WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setDatabaseEnabled(true);
    String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
    settings.setDatabasePath(databasePath);
    WebSettings webseting = webview.getSettings();
    webseting.setDomStorageEnabled(true);
    webseting.setAppCacheMaxSize(1024*1024*8);//设置缓冲大小,我设的是8M
    String appCacheDir = this.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();
    webseting.setAppCachePath(appCacheDir);
    webseting.setAllowFileAccess(true);
    webseting.setAppCacheEnabled(true);
    webseting.setCacheMode(WebSettings.LOAD_DEFAULT);

    webview.setWebChromeClient(new WebChromeClient() {
    public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
            quotaUpdater.updateQuota(5 * 1024 * 1024);
        }
    });
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
        webview.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
private class HelloWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
} 

layout里面的activity_main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

其他的地方我也没动,就这样就支持HTML5 web存储啦。。。。。。。。

时间: 2024-11-10 03:04:46

我的项目10:Android的webview支持HTML5的离线应用功能详细配置的相关文章

Android 使WebView支持HTML5 Video(全屏)播放的方法

http://blog.csdn.net/zrzlj/article/details/8050633 1)需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做,具体如下: a. 如果要声明整个应用都要加速: < application ... android:hardwareAccelerated ="true"> b.  如果要在Ac

让Android的WebView支持html里面的文件上传

默认情况下,Android的webview是不支持<input type=file>的,点击没有任何反应,如果希望点击上传,弹出选择文件.图片的窗口,那就需要自定义一个WebChromeClient public class MyChromeClient extends WebChromeClient { public ValueCallback<Uri> UploadMsg; public ValueCallback<Uri[]> UploadMsg2; privat

android 使用WebView 支持播放优酷视频,土豆视频

看了很多文章和所谓的解决android WebView播放优酷,土豆等视频的办法,都是什么 setPluginsEnabled,在android 4.x之后都不好使,压根就没这函数,因为android 4.x 都去除了flash的支持.就这东西弄的我折腾了半天时间,现在的网站都是采集复制,浪费时间. 只有自己操刀了, 下面给出我的解决办法, 1. 修改AndroidManifest.xml 在Application节点上增加 ? 1 android:hardwareAccelerated="tr

android webview开启html5支持

最近做的一个小项目需要用到webview.虽然只是一个简单的网页,但是由于以前用的都只是显示本地文件,没有显示网页文件.现在需要显示网页文件,发现许多网站的webapp做的挺不错的,无论是显示还是用户体验都很不错(平时上网用uc的省流量功能看不出来). 但是虽然很好用,却发现部分网页甚至连链接都打不开.如果是个别小众网页都算了,这可是360搜索首页啊,要说别人大公司的静态写的兼容性有问题实在说不过去,所以就只能自己找问题了.最有可能的莫过于部分html5的功能没有开启,因为在以往使用时发现有的h

Android:让WebView支持&lt;input type=”file”…&gt;元素

在Android中,当我们通过WebView打开一个页面时,如果里面有元素是<input type=”file”…>类型的,WebView只能正常的显示样式,但是是无法点击的.要解决这个问题,我们需要重写WebChromeClient. 下面直接给出Demo代码: Activity文件: public class MainActivity extends Activity { private final String host = "demo.com"; private f

android使用webview上传文件(支持相册和拍照),支持最高6.0安卓系统(改进版)

首先学习 http://blog.csdn.net/woshinia/article/details/19030437 对input file的支持 1.注意 mUploadMessage.onReceiveValue(Uri.parse("")); 必须得到调用,无论用户是否选了图,否则会出现再点击不响应的情况 2.上面的参考由于比较老,不适用于安卓5.0系统,因为谷歌5.0以后对webkit做了改动, 相关API发生了变化,那么5.0的需要参考http://blog.csdn.ne

(10 Android)实验项目_Android UI与Activity组件(上)

(10 Android)实验项目_Android UI与Activity组件(上) 一.实验目的 (1) 掌握常用的布局方法. (2) 掌握Activity组件的生命周期. 二.实验内容及步骤 在Android Studio中,新建名为Example3的项目,然后在此项目中完成如下几个模块的设计: 1.掌握各种布局的特点.Android常用控件的使用 (1) 在项目里,新建名为example3_1的模块. (2) 在默认的约束布局里,添加垂直线性布局并内嵌水平线性布局,然后依次添加文本框.下拉列

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St

Android之WebView使用总结

前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结. 使用场景: 1.)添加权限 <uses-permission android:name="android.permission.INTERNET" /> 2.)布局文件 <WebView android:id="@+id/webView" android:layout_width="match_parent" andr