文档章节

Android webview(二) 常用设置

风荷举
 风荷举
发布于 2016/05/10 20:15
字数 816
阅读 667
收藏 8

安全相关(去掉不必要的JavaBridge)

//这个Java Bridge是WebView自己添加的
//在Api 17以前,javascript可以通过java对象进行反射,执行一些不安全的操作
webView.removeJavascriptInterface("searchBoxJavaBridge_");

js相关

//设置支持javascript,默认是false
WebSettings.setJavaScriptEnabled(true);

缩放相关

//使WebView支持通过手势或者缩放控制器来缩放页面,默认是true
//该设置不影响 WebView.zoomIn()和WebView.zoomOut()
WebSettings.setSupportZoom(true);

//设置使用默认的缩放控制器,默认是false
WebSettings.setBuiltInZoomControls(true);

//不显示默认的+/-缩放控制View, 默认是true
WebSettings.setDisplayZoomControls(false);

加载图片策略相关

//设置是否自动加载图片,默认是`true`,如果设置为`false`,那么所有图片都不会被加载,包括本地图片.
WebSettings.setLoadsImagesAutomatically(true);

//设置是否阻止加载网络图片,默认是`false`,如果设置为`true`,那么网络图片将不会加载.(可以先设置为true,然后再设置为false,来加快页面加载速度)
WebSettings.setBlockNetworkImage(false);

//设置是否阻止加载网络资源(不仅仅是图片),默认是`false`,如果设置为`true`,那么网络上的js,css,图片等资源都不会加载
WebSettings.setBlockNetworkLoads(false);

渲染相关

//设置渲染线程的优先级
//该方法在 Api 18之后被废弃,优先级由WebView自己管理
//不过任然建议将其设置为 HIGH,来提高页面渲染速度
WebSettings.setRenderPriority(RenderPriority.HIGH);

Viewport相关

//设置使用 宽 的Viewpoint,默认是false
//Android browser以及chrome for Android的设置是`true`
//而WebView的默认设置是`false`
//如果设置为`true`,那么网页的可用宽度为`980px`,并且可以通过 meta data来设置
//如果设置为`false`,那么可用区域和WebView的显示区域有关.
WebSettings.setUseWideViewPort(true);

//如果webview内容宽度大于显示区域的宽度,那么将内容缩小,以适应显示区域的宽度, 默认是false
WebView.setLoadWithOverviewMode(true);
<!--如果WebSettings.getUseWideViewPort 是true, 那么可以通过meta来设置 Viewport -->
<!--例如将其可用宽度设置为 480px, 并且禁用缩放功能-->
<head>
    <meta name="viewport" content="width=480, user-scalable=no" />
</head>

<!--如果WebSettings.getUseWideViewPort 是false, 那么 不能 通过meta来设置-->
其效果类似于:
<meta name="viewport" content="width=device-width"/>

注意: 这里的px和通常说的像素不同,他和dp的概念非常类似. 参见 Mozilla

前端存储相关设置(方便前端工程师在客户端存储数据)

//支持H5的 application cache 的功能
WebSettings.setAppCacheEnabled(true);
//设置 application cache 的存储路径(通常存储js,css,图片等)
WebSetting.setAppCachePath("xxx");

//支持 H5 的session storage和local storage
WebSettings.setDomStorageEnabled(true);

//支持javascript读,写db
WebSettings.setDatabaseEnabled(true);
//设置js创建的db文件的路径, Api 19以后废弃,直接有webview管理
WebSettings.setDatabasePath("xxx");

缓存相关设置

//设置加载资源时,如何使用cache
//默认设置是:WebSettings.LOAD_DEFAULT
//当WebView正常加载一个页面时,如果缓存命中且没有过期,则使用缓存数据,否则从网络加载,当WebView.goBack()时,如果缓存命中,直接使用,不会验证是否过期
//可用的其他设置:LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE, LOAD_CACHE_ONLY
WebSettings.setCacheModel(WebSettings.LOAD_DEFAULT);

cookie相关

public static void synCookies(Context context, String url) {
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);//默认就是true 
    cookieManager.setCookie(url, cookies);
    if(Build.VERSION.SDK_INT < 21) {
	    CookieSyncManager.createInstance(context).sync();
	} else {
		cookieManager.flush();
	}
}

© 著作权归作者所有

风荷举
粉丝 11
博文 24
码字总数 24803
作品 0
朝阳
程序员
私信 提问
WebView深度学习(一)之WebView的基本使用以及Android和js的交互

前言:随着市场需求的不断变化,原生安卓已经无法满足客户的需要了,现在很多app都在使用Android和h5的交互实现某些功能,比如商品详情页,文章详情页面,商品点评页面,还有某些复杂的展示页...

aweiloveandroid
2017/07/01
0
0
Android WebView出现的乱码问题

1、webview加载网页<html>源码乱码问题 一、webView.loadUrl(); 直接显示网页内容(单独显示网络图片),一般不会出现乱码。 二、webView.loadData(data, "text/html", "UTF-8"); loadData主要......

当空皓月
2015/01/05
4.4K
5
Android:最全面的 Webview 详解

前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面...

临江仙卜算子
2018/07/07
184
0
WebView,我已经长大了,知道自己区分是否安全了!

一、前言 如果你在用 Android 原生系统(Google Play 服务),在使用 WebView 加载某些网页时,一定遇到过以下的安全警告红屏。 这是 WebView 的安全浏览保护策略,在 Android 8.0(API Lev...

承香墨影
03/13
0
0
Android WebView详解(二):Android原生与JS互调

Android 去调用JS 的代码 通过WebView的loadUrl() 先写一个html,很简单的一个代码,alert显示。 android_load_js.html Android调用 JS 代码demo// JS代码 在Activity中 mWebSettings = mWe...

蔡小鹏
2018/02/06
564
0

没有更多内容

加载失败,请刷新页面

加载更多

手写RPC框架指北另送贴心注释代码一套

Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码...

全菜工程师小辉
16分钟前
3
0
【Java】开发收货

简介 谨以此篇,记载开发过程中的一些tips。 编译器 【Shift + F6】可实现变量的联动修改。

Areya
33分钟前
5
0
DOM官方定义

DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容、结构、样式。 DOM只是一个标准,操作网页的标准。...

前端老手
38分钟前
6
0
IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作

学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词。需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱。另外,前端开发也会细分很多个开...

老码农的一亩三分地
40分钟前
6
0
可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
55分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部