Android Studio 学习笔记(五):We‎bV‎ie‎w 简单说明

来源:kmgdwlc.com   作者:   发表时间:2020-02-21 04:28:03

Android中一个用于网页显示的控件,实际上,也可以看做一个功能最小化的浏览器,看起来类似于在微信中打开网页链接的页面。WebView主要用于在app应用中方便地访问远程网页或本地html资源。同时,WebView也在Android中充当Java代码和JS代码之间交互的桥梁。

设置WebView至少有两种方法

一般采用第一种方法,在 Activity中设置加载页面步骤如下

对变量private WebView wView;

电脑本地文件:放在app/src/main/assets下的html

wView.loadUrl("file:///android_asset/test.html");

wView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");

需先在清单文件 AndroidManifest文件中为app申请网络使用权限:

<uses-permission android:name="android.permission.INTERNET"/>

wView.loadUrl("https://www.cnblogs.com/ifever/")

以上两个方法都会在WebView加载新的url时触发。

Android 5.0以下系统会回调第一个方法,反之回调第二个方法。因此,为了兼容不同的系统版本,可以同时重写这两个方法。

可以看到,这两个方法都有一个boolean返回值。假如修改为true,会带来重定向问题。

虽然不会影响加载,不过会带来用户点击回退键始终无法退出应用的问题,下面简单介绍下原理:

假设访问网页过程为A - > B - > C共三个站点,在C时点回退,C - > B没问题,接着再点 B -> A,这个时候问题出现了。尽管B来到了A,但是因为重定向又跳转到了B,如此循环往复...

返回值设为false的情况(且删去view.loadUrl()方法)就可解决这种问题。其实无论返回true还是false,只要为WebView设置了WebViewClient,都不影响正常的加载功能,只是系统就不会再将url交给第三方的浏览器去处理了。

这两种返回值的真正区别是这样的:

shouldOverrideUrlLoading返回false,代表将url交给当前WebView加载,也就是正常的加载状态;shouldOverrideUrlLoading返回true,代表开发者已经对url进行了处理,WebView就不会再对这个url进行加载了。可以用于屏蔽某些网址,借此实现黑名单机制。

解决了用户点击回退键始终无法退出应用,但还存在一个显著问题:用户希望回退到上一级页面,却直接退出了app

goBack() //回退到上一级页面

canGoBack()//能否回退到上一级页面

默认情况下,返回键会执行finish()方法,结束当前Activity。

有些app为了防止用户误触,在按下返回键且无法回退上一级页面时,会提示需要再次按下返回键,才结束当前Activity。这意味着需要在一定时间内连续按动两次返回键才可退出,设计更加人性化。将上述代码改为

此外修改布局文件,通过添加按钮并编写,也可以添加其他新功能,常用的有

finish(); //关闭当前Activity,一键退出

wView.reload(); //刷新当前页面

wView.setScrollY(0); //滚动到顶部

newProgress*100,即可获得当前加载的百分比,具体方法网上可查,这里暂不深入

在开通Java权限后,可以设置网页弹窗,至少有两种方式,alert、confirm、prompt三种类型的弹窗

开通Java权限及其他设置见下文

WebSettings 用来管理WebView 状态

为了方便,这里写为WebSettings settings = wView.getSettings();

默认情况下,WebView是不支持Javascript的,需要调用 setJavaScriptEnabled(true),即

settings.setJavaScriptEnabled(true);

比如打开百度,添加该行代码前,网页少了很多广告,进入搜索结果会提示需要切换为完整版(因为无法不支持JS所以无法),但不涉及复杂功能的情况下,不影响使用

添加后,反而容易报错,也存在安全隐患,在本人的oppo r11上调试就会出现net_ERROR错误,暂时找不到原因

即双指缩放页面的手势控制缩放,由以下代码实现

在很多网页依旧不能缩放,经查阅,应该是页面已经被设置好手机样式了,但对于传统的PC版网页,缩放功能仍有效。

编辑:

未经授权许可,不得转载或镜像
© Copyright © 1997-2019 by kmgdwlc.com all rights reserved