记自己遇到的一些WebView坑

2024-08-25 02:18
文章标签 遇到 webview

本文主要是介绍记自己遇到的一些WebView坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记自己遇到的一些WebView坑

1. 坑1

这个bug遇到的时候不是必现。
WebView加载时设置了这样的语句会加载白页:

webView.loadData("", "text/html", "uft-8");

例如:

webView.loadData("", "text/html", "uft-8");
//...<other code>...webView1.loadUrl(url);
//...<other code>...@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.iv_goback:if (webView.canGoBack()) {//此时此处canGoBack()有一定几率为true 导致返回为白页webView.goBack();//返回上一浏览页面} else {finish();//关闭Activity}}}

我的配置代码

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_html5_bottom_bar);mProgressBar = (ProgressBar) findViewById(R.id.progressBar);mProgressBar.setMax(100);
}
private void requestData(String url) {WebSettings webSettings = webView.getSettings();webSettings.setDefaultTextEncodingName("utf-8");webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存webView.setWebChromeClient(new MyChromeClient());webSettings.setBuiltInZoomControls(false); // 放大缩放按钮// 如果访问的页面中有JavaScript,则WebView必须设置支持JavaScriptwebSettings.setJavaScriptEnabled(true);//JS交互webView.addJavascriptInterface(new JsInteration(), "control");// 设置可以支持缩放webSettings.setSupportZoom(true);// 扩大比例的缩放webSettings.setUseWideViewPort(true);webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);webSettings.setLoadWithOverviewMode(true);webView.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边view.loadUrl(url);return true;}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);isShowFail = false;}@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);if (!isShowFail) { customview.showLoadStateView(CustomView.STATE_NONE);}}@Overridepublic void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {super.onReceivedError(view, errorCode, description, failingUrl);isShowFail = true;customview.showLoadStateView(CustomView.STATE_ERROR);// 加载失败时显示的失败界面}});webView.loadUrl(url);
}
//与JS交互的对象
public class JsInteration {@JavascriptInterfacepublic void gotoGoodInfo(String id){//doSomething}
}
// 设置加载进度
public class MyChromeClient extends android.webkit.WebChromeClient {@Overridepublic void onProgressChanged(WebView view, int newProgress) {mProgressBar.setProgress(newProgress);if (newProgress == 100) {mProgressBar.setVisibility(View.GONE);} else {mProgressBar.setVisibility(View.VISIBLE);}super.onProgressChanged(view, newProgress);}@Overridepublic void onReceivedTitle(WebView view, String title) {//获取加载的url的标题super.onReceivedTitle(view, title);}
}

陆续更新,博客新人欢迎评论╮( ̄▽ ̄”)╭

这篇关于记自己遇到的一些WebView坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104265

相关文章

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

Android 友盟消息推送集成遇到的问题

友盟消息推送遇到的问题 集成友盟消息推送,步骤根据提供的技术文档接入便可。可是当你集成到项目中去的时候,可能并不是一帆风顺就搞定,因为你项目里面是可能集成了其他的sdk(比如支付宝,微信,七鱼等等三方的sdk)。那么这个时候,再加上友盟的消息推送sdk集成可能就会出现问题。 问题清单 友盟消息推送sdk和支付宝sdk冲突问题 后台配置了消息推送,也显示发送成功,但是手机没有收到消息通知