修复android下webView控件的总结
游戏中有一个收集玩家问题反馈的网页很早之前就有同事反映说android在游戏无法上传附件在浏览器中是可以正常使用的。最近能腾出手来的时候就仔细看了一下这个问题发现很里藏着不少问题这里一一记录下来希望能其它人有用因为很多问题跟网上反映出来可能有点不太一样。
既然是网页而且只在游戏中才出现那第一步你要先会使用Fiddler来拦截请求定位出问题的代码在哪里。你可以参考这篇文章抓包已经讲的已经非常详细了Step By Step Fiddler (四) 实现手机的抓包
在Fiddler中找到请求的网页链接点击查看后将响应的文本使用文本工具我是使用的EditPlus保存然后修改它再用Fiddler的AutoResponder进行请求拦截就能进行动态调试了
不过开了Fiddler中的HTTPS请求后使用 Chrome访问HTTPS链接时都会提示此网站身份未认证手机安装证书之后我的设备就必须设定手势密码了设置之后还不能取消手势必须先删除证书才能恢复以前的无手势访问。
而且开启了代理之后360的SDK点击登录时提示“无法连接到网络请检测您的手机网络设置”其实是可以上网的只是这个提示误导性比较强先不使用代理登录SDK进入游戏后再开启代理即可。
问题一部分Android设备无法输入字母、数字但是可以输入中文返回按钮点击无效网页不会后退
网上很多包括stackflow也会有很多结果我试了很多没有一个能解决我所遇到的问题还有人说是一个bug最后我是在一篇文章中猛然发现可能我目前使用的代码写的有问题离职人员留下的这篇文章链接在这里
android开发中WebView的使用(附完整程序)
老的代码红色标注的地方是直接返回true改成super.onKeyDown(keyCode, event)就正常了
问题二Android设备点击网页的input[file]控件无效的问题
我是通过这篇文章找到解决方案的Android WebView上传文件
搜索出来的答案我记不得那个网址了是在stackoverflow上的但是它的那个参数有点问题上面三个函数中好像有一个函数的参数它写的是“ValueCallback”没有后面的<Uri>这个其实是有问题的统一为ValueCallback<Uri> uploadMsg只是它后面参数长度的问题
问题三上传附件可能遇到失败的情况上传成功时调用history.go(-1)不起作用
一个选择问题类型页面A一个问题详情表单页B。通过webView的loadUrl方法调用时传入的url有很多。比如当前游戏的角色、服务器啊、游戏产品标识、设备mac等很长的一串信息点击表单页B时又多带上了一个type。
在页面B中用户点击一个A元素的超链接(href=”javascript:history.go(-1);”)它能正常返回但是在点击提交问题按钮之后ajax接口成功后用js调用history.go(-1)页面变成空白了居然空白了
网上搜索了很多方法也尝试了很多结果都失败了尝试的几种方案
SmartPhone Web开发问题总结
Android : Detect history.back() in WebView
Why is javascript:history.go(-1); not working on mobile devices?
WebView back history without redirects
首先排除Java中设置的问题因为JavaScript是起作用的证明mWebView.getSettings().setJavaScriptEnabled(true);是生效了的。
然后我尝试直接本地修改代码页面载入完成时调用history.go(-1)是能正常工作的。原本我尝试使用location.href = document.referrer结果发现获取不到referrer关于document.referrer可以参考这篇文章>>
然后我就在想要不要动态创建form表单然后通过document.location.search.substr(1)获取参数列表再将所有参数填写input中然后提交表单就页面跳转呢但又要写一些代码所以又想先再找找有没有其它办法…
之后我仔细查看了http的上传请求尝试在ajax.ajaxFileUpload的success方法中延时调用history.go(-1)发现界面错位了。这时候我突然会不会提交表单时它里面动态创建了一个iframe导致调用history.go(-1)失效了呢
文件上传ajaxFileUpload插件使用的是Content-Disposition来实现的关于Content-Disposition的详情可以参数这篇文章正确处理下载文件时HTTP头的编码问题Content-Disposition
源码我就没仔细看过了然后我换了一种写法history.go(1 - history.length);就搞定了页面也能正常返回了
图片上传失败的问题需要与后台一起联调比较费时也不是必定会遇到。也比较麻烦所以暂时就搁置了感觉是编码问题造成的有待进一步确认…
希望以上三个问题能给遇到类似问题的人一些帮助吧通过搜索来处理完全未知的问题时确实需要细心和耐心特别是在时间比较紧张的情况下一定不能急躁一躁思路就可能乱了
修复android下webView控件的总结相关推荐
- android的webview控件载入网页显示速度慢的究极解决方案,【转】Android的WebView控件载入网页显示速度慢的究极解决方案...
Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近秒(甚至更多)时间才会显示出来.研究了很久,搜遍了国外很多网站,也看过PhoneGap的代 ...
- Android的WebView控件载入网页显示速度慢的究极解决方案
Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...
- 【Android】WebView控件最全使用解析
WebView控件最全使用解析 一.WebView 概述 二.WebView使用基础篇 2.1添加方式 2.2 加载远程网页 2.3 加载本地网页 2.4 加载HTML片段 2.5 WebView 常 ...
- Android使用webview控件加载本地html,通过Js与后台Java实现数据的传递
1.在布局文件中加WebView控件,在java中获取WebView对象. 2.加载本地html文件. webView.loadUrl("file:///android_asset/andr ...
- Android关于WebView控件net::ERR_CLEARTEXT_NOT_PERMITTED报错问题解决
我们在做WebView加载网页的时候常常会报错net::ERR_CLEARTEXT_NOT_PERMITTED 今天我们就来解决这个问题 首页打开项目配置清单 添加如下内容 <uses-perm ...
- Android 下拉控件Spinner
Spinner 是android 系统下拉的一个控件 下面分别在把下拉内容在xml 中和java 代码中 来实现操作 1 xml 中 在xml 中创建一个spinner <Spinnerandr ...
- Android中WebView控件支持地理位置定位
Android WebView从assets中加载html5页面,实现地理位置定位,有需要的朋友可以参考下. 今天调研一个html5页面的定位问题,发现在手机浏览器上html5是可以实现定位的,但是在 ...
- Android Native APP开发笔记:使用WebView控件加载网页
文章目录 目的 基础使用 处理网页导航 加载本地网页 Web和Native之间交互 调试Web应用 处理页面重绘 总结 目的 WebView是一个比较常用的控件,功能上也比较单一,就是用来加载网页的, ...
- android抖音自动刷新,Android 使用SwipeRefreshLayout控件仿抖音做的视频下拉刷新效果...
SwipeRefreshLayout(这个控件),我先跟大家介绍一下这个控件: 一.SwipeRefreshLayout简单介绍 •先看以下官方文档,已有了很详细的描述了. 官方文档说明 •这里我再大 ...
最新文章
- 【Java 注解】自定义注解 ( 注解解析 )
- Selenium3+python自动化009- 多选框
- 记不住ASP.NET页面生命周期的苦恼
- mysql 全连接查询合并字段
- flutter天气_牛笔!自己用Flutter撸一个天气APP
- Highcharts使用表格数据绘制图表
- Linux、命令ps 各字段意思
- 虚拟机报错:collect.exe
- 早起的奇迹,梦醒后成为梦想的自己!
- Qt 确认对话框(确定/取消)
- win10热点 ip配置失败
- window屏幕录制
- Spring boot带来的信息泄露
- JS实现拼接图片src
- UEditor之图片上传如何和真实项目结合
- 研发效能系列----开源的数据库版本管理工具Flyway
- 计算机网络之在浏览器输入“www.xxx.com”后都发生了什么?
- 开发购物商城app需要多少钱
- 彩色图像--色彩空间 CIELAB、CIELUV
- 从喜剧明星到NBA詹皇,盘点此届超级碗期间的加密广告