WebView加载H5

        webview.setHorizontalScrollBarEnabled(false);//设置横向滚动属性
        webview.setVerticalScrollBarEnabled(false);//设置纵向滚动属性

        // 启用javascript
        WebSettings webSettings = webview.getSettings();
        webSettings.setUseWideViewPort(true);//将图片调整到适合webview的大小
        webSettings.setLoadWithOverviewMode(true);//是否允许WebView度超出以概览的方式载入页面,默认false。
        webSettings.setJavaScriptEnabled(true); //支持js
        webSettings.setBuiltInZoomControls(true);//是否使用内置的缩放机制
        webSettings.setSupportZoom(true);//支持缩放
        webSettings.setDisplayZoomControls(false); //不显示webview缩放按钮
        webSettings.setDefaultTextEncodingName("utf-8");//设置默认的字符编码集,默认”UTF-8”.
        webview.requestFocusFromTouch();//Touch模式下不支持焦点,也能够获得焦点使用的。

        // 设置 缓存模式
        if (isNetworkConnected(this)) {
            webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);//根据cache-control决定是否从网络上取数据。
        } else {
            webSettings.setCacheMode(
                    WebSettings.LOAD_CACHE_ELSE_NETWORK);//只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
        }
        webSettings.setBlockNetworkImage(true);// 把图片加载放在最后来加载渲染
        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        // 支持多窗口
        webSettings.setSupportMultipleWindows(true); //多窗口
        // 开启 DOM storage API 功能
        webSettings.setDomStorageEnabled(true);
        // 开启 Application Caches 功能
        webSettings.setAppCacheEnabled(true);
        //设置数据库缓存路径
        String cacheDirPath = getFilesDir().getAbsolutePath()+WEBVIEW_CACAHE_NAME;
        webSettings.setDatabasePath(cacheDirPath);
        //设置  Application Caches 缓存目录
        webSettings.setAppCachePath(cacheDirPath);
        webview.loadUrl(storeUrl);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                //设定加载开始的操作
                showCustomDiaolog();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                dismissCustomDialog();
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });



返回的时候

   if (webview.canGoBack()) {
                    webview.goBack();//返回上一页面
                } else {
                    finish();//退出活动
                }

关于webView属性的介绍 ,这个http://blog.youkuaiyun.com/kevinscsdn/article/details/52241334#comments比较全

webview  缓存模式(5种) 
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。 
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式 
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据. 
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

清除缓存
    /**
     * 清除WebView缓存
     */ 
    public void clearWebViewCache(){ 

        //清理Webview缓存数据库 
        try { 
            deleteDatabase("webview.db");  
            deleteDatabase("webviewCache.db"); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 

        //WebView 缓存文件 
        File appCacheDir = new File(getFilesDir().getAbsolutePath()+WEBVIEW_CACAHE_NAME); 
        Log.e(TAG, "appCacheDir path="+appCacheDir.getAbsolutePath()); 

        File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache"); 
        Log.e(TAG, "webviewCacheDir path="+webviewCacheDir.getAbsolutePath()); 

        //删除webview 缓存目录 
        if(webviewCacheDir.exists()){ 
            deleteFile(webviewCacheDir); 
        } 
        //删除webview 缓存 缓存目录 
        if(appCacheDir.exists()){ 
            deleteFile(appCacheDir); 
        } 
    } 

    /**
     * 递归删除 文件/文件夹
     * 
     * @param file
     */ 
    public void deleteFile(File file) { 

        Log.i(TAG, "delete file path=" + file.getAbsolutePath()); 

        if (file.exists()) { 
            if (file.isFile()) { 
                file.delete(); 
            } else if (file.isDirectory()) { 
                File files[] = file.listFiles(); 
                for (int i = 0; i < files.length; i++) { 
                    deleteFile(files[i]); 
                } 
            } 
            file.delete(); 
        } else { 
            Log.e(TAG, "delete file no exists " + file.getAbsolutePath()); 
        } 
    } 

但是加载淘宝天猫的页面的时候会 出现这样的错误:

这里写图片描述

解决办法:

    webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//                view.loadUrl(request.toString());
                return super.shouldOverrideUrlLoading(view, request);
            }
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                super.onReceivedSslError(view, handler, error);
            }
        });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葫芦娃你好我是皮卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值