WebView是一个用于显示网页的控件,它通常被用于嵌入浏览器组件,让用户在应用程序中查看网页内容。如果在使用WebView访问网页时,发现被植入了游戏,可能有以下几种情况:
1. 非法篡改:网页可能被第三方恶意篡改,添加了游戏或其他不期望的内容。这可能是通过JavaScript代码或者网页源代码实现的。
2. 恶意广告:某些广告可能会自动加载游戏或其它应用程序,看起来像网页的一部分,但实际上是一个隐藏的下载链接。
3. 网站设计错误:如果网站设计者没有正确地控制内容,可能会无意中嵌入了游戏或者其他第三方应用。
4. 用户误操作:用户可能误点击了某些带有恶意代码的链接,导致网页加载了包含游戏的代码。
要防止这种情况,可以采取以下措施:
1. 使用安全的网络连接:确保WebView加载的网页来自可信赖的源。
2. 安全设置:设置WebView的JavaScript权限,避免执行恶意脚本。
3. 使用内容过滤:一些WebView组件提供了内置的安全策略,可以防止恶意内容的加载。
4. 定期更新:保持应用程序和WebView组件的更新,以获取最新的安全补丁。
5. 安全浏览:教育用户避免点击可疑链接,尤其是在不受信任的网站上。
如果已经发现被植入游戏,可以尝试清除缓存、禁止JavaScript执行或者使用专业的安全工具进行扫描。如果问题持续存在,可能需要联系应用的开发者或报告给相关的安全机构。
隐藏极深的安卓漏洞,五年未被发现,上亿用户受影响!
目前,谷歌已经在Chrome 72中修复此漏洞,安卓7以及以后的系统版本,可以通过Chrome更新获得修复,但是安卓5、6版本的用户需要在谷歌商店中下载安卓WebView的特别更新。ddos.cc平台友情提醒,警惕恶意攻击,提高安全警惕。
如果你对此主题或任何其他主题有疑问,最简单的方法是通过我们的论坛,这里有一群最友好的人等着你的到来,并且会乐于帮助你解决问题!
我们可以花更多的时间来了解 WebView,并更深入地了解它们提供的一些特殊行为,但这会让我们偏离主题。对于我们在本篇文章要讲的东西,不偏离主题并宽泛了解WebView 才是正确的——至少到目前为止。
webview访问网页被植入游戏
在 iOS 上小慕容三国游戏单机推荐,Web 渲染引擎始终是 WebKit,与 Safari 和 Chrome 相同。是的,你没看错。iOS 上的 Chrome 实际上使用了 WebKit。
WebView 非常棒。虽然看起来它们看起来像是完全特殊和独特的野兽,记住,它们只不过是一个在应用中设置好位置和大小的浏览器,而且不会放置任何花哨的 UI。其实还有更多东西,但这是它的精髓。在大多数情况下,除非你要调用原生 API,否则不必在 WebView 中专门测试 Web 应用。除此以外,你在 WebView 中看到的内容与你在浏览器中看到的内容相同,尤其是使用同一渲染引擎时:
如果你必须使用纯原生应用,不仅需要为构建应用的每个平台更新项目,你可能必须经历耗时的应用审核过程才能使你的更新在所有的应用商店获取到。从部署和更新的角度来看,混合应用非常方便。将这种便利性与原生设备访问相结合能为你的 Web 应用提供超能力,这样你就拥有了一个成功的技术解决方案。WebView 使一切成为可能。
这些应用被称为混合应用。从技术角度来看,这些仍然是原生应用。事实上,这些应用所做的唯一原生操作就是托管 WebView,而 WebView 又加载 Web 内容和用户交互的所有 UI。混合应用很受欢迎有几个原因。最大的一个是开发人员生产力。如果你有一个在浏览器中运行的响应式 Web 应用,那么在各种设备上使用相同的应用作为混合应用会非常简单:
到目前为止,我们一直在将 WebView 视为舞台上的次要支持角色,并由原生应用和其他原生 UI 元素完全支配。WebView 具有成为明星的深度和广度,并且在一大类应用中 WebView 内部加载的 Web 内容构成了整个应用用户体验:
虽然原生广告确实存在,但大多数原生解决方案在幕后使用 WebView,并从集中式广告服务器提供类似于你在浏览器中看到的广告。
现在我们已经了解了 WebView 的概况以及他们所拥有的一些强大作用,让我们退后一步,看看我们一些在原生应用中受欢迎的 WebView 的用例情况。
这就是为什么对于 WebView,开发人员可以使用各种受支持的方式来覆盖默认的安全行为,并让 Web 代码和原生应用代码相互通信。这种沟通通常称为 bridge。你可以在前面的图表中看到 bridge 可视化为 Native Bridge 和 JavaScript Bridge 的一部分。详细了解这些 bridge 的内容超出了本文的范围,但要点如下:为 Web 编写的相同 JavaScript 不仅可以在 WebView 中运行,还可以调用原生 API 并帮助你的应用更深入地集成酷炫的系统级功能,如传感器,存储,日历/联系人等。
默认情况下,在 WebView 或 Web 浏览器中运行的任何 Web 代码都与应用的其余部分保持隔离。这样做是出于安全原因,主要是为降低恶意的 JavaScript 代码对系统造成的伤害。如果浏览器或 WebView 出现故障,那很不幸,但可以接受。如果整个系统发生故障,那很不幸……并且这样不能接受。对于任意 Web 内容,这种安全级别很有意义。你永远不能完全信任加载的 Web 内容。WebView 的情况并非如此。对于 WebView 方案,开发人员通常可以完全控制加载的内容。恶意代码进入并在设备上造成混乱的可能性非常低。
运行在你的 WebView 中的 JavaScript 有能力调用原生的系统 API。这意味着你不必受到 Web 代码通常必须遵守的传统浏览器安全沙箱的限制。下图解释了使这样成为可能的架构差异:
这种灵活性打开了一个浏览器端的 Web 应用和希望展示在原生应用中的 Web 应用代码之间可重用的世界。这一切听起来真的非常棒……
把所有的这些概念放到一起并简单整合下,WebView 只是一个可视化的组件/控件/文件等。这样我们可以用它来作为我们原生 app 的视觉部分。当你使用原生应用时,WebView 可能只是被隐藏在普通的原生 UI 元素中,你甚至用不到注意到它。
WebView 就是浏览器引擎部分,你可以像插入 iframe 一样将 Webview 插入到你的原生应用中,并且编程化的告诉它将会加载什么网页内容。
如果你把浏览器想象成两部分,一部分是 UI(地址栏,导航栏按钮等),其它部分是把标记跟代码转换成我们可见和可交互视图的引擎。
if (mWebView.getContentHeight * mWebView.getScale == (mWebView.getHeight +
从上面可以看出,我们先使用loadDataWithBaseURL清除掉默认错误页内容,再让我们自定义的View得到显示(mErrorFrame为蒙在WebView之上的一个LinearLayout布局,默认为View.GONE)。
super.onReceivedError(view, errorCode, description, failingUrl);
public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) {
当WebView加载页面出错时(一般为404 NOT FOUND),安卓WebView会默认显示一个卖萌的出错界面。但我们怎么能让用户发现原来我使用的是网页应用呢,我们期望的是用户在网页上得到是如原生般应用的体验,那就先要从干掉这个默认出错页面开始。当WebView加载出错时,我们会在WebViewClient实例中的onReceivedError方法接收到错误,我们就在这里做些手脚:
默认情况html代码下载到WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络请求下载文件,但如果在这之前也有解析到image节点,那势必也会发起网络请求下载相应的图片。在网络情况较差的情况下,过多的网络请求就会造成带宽紧张,影响到css或js文件加载完成的时间,造成页面空白loading过久。解决的方法就是告诉WebView先不要自动加载图片,等页面finish后再发起图片加载。
主要是通过MyWebCromeClient 的onProgressChanged方法里面的进度值调用progressView.setProgress方法去更新进度条,当加载100%的时候让进度条消失。具体实现你们自己去处理吧。
public void onProgressChanged(WebView view, int newProgress) {
首先自定义一个HorizontalProgressView继承View,然后自定义一个MyWebView继承WebView,然后初始化的时候通过addView方法把前面自定义HorizontalProgressView,然后在MyWebView里面写一个内部类继承WebChromeClient,大致代码如下:
用Webview加载一个网页时,如果加载时间长,界面会一直空白,体验不太好,所以加个进度条更好看一下,主流APP也都有进度条效果,大概思路我来说一下:
不适合使用场景:View树经常更新时不要用。尤其是在硬件加速打开时,每次更新消耗的时间更多。因为渲染完这张Bitmap后还需要再把这张Bitmap渲染到hardware layer上面去。
onScrollChanged(getScrollX, getScrollY, getScrollX, getScrollY);
如果你的多个WebView是放在ViewPager里一个个加载出来的,那么就会遇到这样的问题。ViewPager首屏WebView的创建是在前台,点击时没有问题;而其他非首屏的WebView是在后台创建,滑动到它后点击页面会出现如下错误日志:
随后我就发现,虽然图片可以显示了,但是ListView和WebView等控件显得特别的卡,这说明硬件加速对于程序的性能提升是很明显的。所以我就改为对于Activity的关闭。
图片无法显示:做的程序里有的时候会需要加载大图,但是硬件加速中 OpenGL对于内存是有限制的。如果遇到了这个限制,LogCat只会报一个Warning: Bitmap too large to be uploaded into a texture (587x7696, max=2048x2048)
做的软件,在一些机器上,打字的时候,EditText中的内容会出现重叠,而大部分机器没有,所以感觉不是代码的问题,一直没有头绪。
4.0以上的系统我们开启硬件加速后,WebView渲染页面更加快速,拖动也更加顺滑。但有个副作用就是,当WebView视图被整体遮住一块,然后突然恢复时(比如使用SlideMenu将WebView从侧边滑出来时),这个过渡期会出现白块同时界面闪烁。
Intent i = new Intent(MainActivity.this, ImageActivity.class);
WebView.HitTestResult result = ((WebView)v).getHitTestResult;
mWebView.setOnLongClickListener(new View.OnLongClickListener {
WebView.HitTestResult result = ((WebView) v).getHitTestResult;
mWebview.setOnLongClickListener(new View.OnLongClickListener {
WebView调用手机系统相册来上传图片,并处理好上面的问题,我们打好release包测试的时候却又发现还是没法选择图片了。怎么解决?
filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
public boolean onShowFileChooser(WebView webView, ValueCallback
public void openFileChooser(ValueCallback
public void openFileChooser(ValueCallback valueCallback, String acceptType) {
public void openFileChooser(ValueCallback
解决方案:为了兼容各个版本,我们需要对openFileChooser进行重载,同时针对5.0及以上重写onShowFileChooser方法:
原因分析:因为Google攻城狮们对setWebChromeClient的回调方法openFileChooser做了多次修改,5.0以下openFileChooser有几种重载方法,在5.0以上将回调方法该为了onShowFileChooser。
//super.onReceivedSslError(view, handler, error);注意一定要去除这行代码类似傲世三国的网页游戏,否则设置无效。
另外:在认证证书不被Android所接受的情况下,我们可以通过设置重写WebViewClient的onReceivedSslError方法在其中设置接受所有网站的证书来解决,具体代码如下:
webSetting.setMixedContentMode(webSetting.getMixedContentMode);
为什么打包之后JS调用失败(或者WebView与JavaScript相互调用时,如果是debug没有配置混淆时,调用时没问题的,但是当设置混淆后发现无法正常调用了)?
在一些机型上面,Webview.goBack后,这个方法不一定会调用,所以标题还是之前页面的标题。那么你就需要用一个ArrayList来保持加载过的url,一个HashMap保存url及对应的title.然后就是用WebView.canGoBack来做判断处理了。
and geolocation. Note that this call does not pause JavaScript. To pause JavaScript globally, use
还有别问我为什么要移除,等你Error: WebView.destroy called while still attached!之后你就知道了。
码友们平时在Android开发过程中或多或少会使用webview来加载一些网页,是否经常遇到莫名奇妙的问题呢?本文带码友们一起来填坑~
专题: 三国单机游戏4 单机游戏三国记 单机游戏三国下一篇MAC电脑玩不了网页游戏