设为首页 加入收藏

TOP

Android之webview详解(非原创)(五)
2019-09-01 23:12:42 】 浏览:107
Tags:Android webview 详解 原创
tps请求,webView默认是不处理https请求的,页面显示空白,需要进行如下设置:

webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); //表示等待证书响应 // handler.cancel(); //表示挂起连接,为默认方式 // handler.handleMessage(null); //可做其他处理 } }); 

4.数据缓存

当加载 html 页面时,WebView会在/data/data/包名目录下生成 database 与 cache 两个文件夹
请求的 URL记录保存在 WebViewCache.db,而 URL的内容是保存在 WebViewCache 文件夹下,设置是否启动缓存方法如下:

 WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
      缓存模式如下:
       // LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 // LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。 // LOAD_NO_CACHE: 不使用缓存,只从网络获取数据. // LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。 //WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);不使用缓存 

结合使用(离线加载)

if (NetStatusUtil.isConnected(getApplicationContext())) { webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);//根据cache-control决定是否从网络上取数据。 } else { webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//没网,则从本地获取,即离线加载 } webSettings.setDomStorageEnabled(true); // 开启 DOM storage API 功能 webSettings.setDatabaseEnabled(true); //开启 database storage API 功能 webSettings.setAppCacheEnabled(true);//开启 Application Caches 功能 String cacheDirPath = getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME; webSettings.setAppCachePath(cacheDirPath); //设置 Application Caches 缓存目录 //注意: 每个 Application 只调用一次 WebSettings.setAppCachePath(),WebSettings.setAppCacheMaxSize() 

清理缓存

//清除网页访问留下的缓存 //由于内核缓存是全局的因此这个方法不仅仅针对webview而是针对整个应用程序. webView.clearCache(true); //清除当前webview访问的历史记录 //只会webview访问历史记录里的所有记录除了当前访问记录 webView.clearHistory(); //这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据 webView.clearFormData(); 另外一种方式: //删除缓存文件夹 File file = CacheManager.getCacheFileBaseDir(); if (file != null && file.exists() && file.isDirectory()) { for (File item : file.listFiles()) { item.delete(); } file.delete(); } //删除缓存数据库 context.deleteDatabase("webview.db"); context.deleteDatabase("webviewCache.db"); 

5.Android 和 java script 交互

安卓代码

 WebSettings settings = mWebView.getSettings();
  settings.setjava scriptEnabled(true);//开启java script mWebView.loadUrl("file:///android_asset/keithxiaoy.html");//加载本地网页 mWebView.setWebChromeClient(new WebChromeClient());//此行代码可以保证java script的Alert弹窗正常弹出 //核心方法, 用于处理java script被执行后的回调 mWebView.addjava scriptInterface(new JsCallback() { @java scriptInterface//注意:此处一定要加该注解,否则在4.1+系统上运行失败 @Override public void onJsCallback() { System.out.println("java script调用Android啦"); } }, "keithxiaoy");//参1是回调接口的实现;参2是java script回调对象的名称 //定义回调接口 public interface JsCallback { public void onJsCallback(); } 

Android 调用 java script

  //直接使用webview加载js就可以了 mWebView.loadUrl("java script:wave()"); 

html代码如下

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <script language="java script"> /* This function is invoked by the activity */ function wave() { alert("Android调用java script"); } </script> <body> <!-- java script调用Android代码 --> <a onClick="window.demo.onJsCallback()"><div style="width:
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android中资源的引用 下一篇react native中使用echarts

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目