H5页面打开android本地照册,当webview页面被系统回收的情况下,如何处理图片
来源:互联网 发布:合肥软件开发待遇 编辑:程序博客网 时间:2024/04/28 20:45
一、现象描述:
报告单上传图片功能打开照相机拍照后,图片无法显示
二、问题原因:
报告单上传图片的时候,对应流程是这样:
webview打开页面------->打开照相机----->裁剪压缩-----回到webview页面通知H5
如果打开照相机的时候,webview页面被回收,那么回到webview页面时,就通知不到H5了。
这个问题如果都是在客户端的话是可以处理的。(如之前的发成长),但现在这个页面是H5的。所以需要
H5端配合处理。
三、解决方案一:
如果webview页面被回收,webview会自动重启,在H5页面加载完成的时刻,由客户端调用H5接口
onRestoreImage(),H5端进行点击事件的模拟。然后客户端直接将上次选好图的URI通过回调方法传递给H5
具体做法:
客户端:webview会自动重启,在H5页面加载完成的时刻,由客户端调用H5接口
onRestoreImage()。
等到H5端完成点击事件的模拟后,客户端在onOpenFielChooser中将上次选好图的URI通过回调传递给H5。
H5端:在 onRestoreImage接口被触发的时候,模拟选图的点击事件即可。
解决方案二:
我们知道H5打开相册时,会触发webchromeclient的openFileChooser回调。
待客户端获取到本地相册后,将URI通过ValueCallback回调传递给H5。
问题来了,当webview页面被回收后,openFileChooser不会被触发,那么如果知道ValueCallback的回调都处理了哪些事情,然后模拟即可。
为些调研源码。
H5调用系统相册时,先调到下面的方法:
然后找到获得URI的callbackproxy 类,再看一下;
红线部分的处理就是 回调JAVA层的openfileChooser的代码。
重点在这里如下:
BrowserFrame.sJavaBridge.storeFilePathForContentUri(filePath, uriString);
是通过JSBridage通知到的H5.
0 0
- H5页面打开android本地照册,当webview页面被系统回收的情况下,如何处理图片
- Android用webView加载h5的页面,h5获取本地的图库中的图片
- [android开发]WebView如何获得正在打开页面的进度?
- iOS webView与H5的交互(返回页面的处理)
- iOS webView与H5的交互(返回页面的处理)
- iOS webView与H5的交互(返回页面的处理)
- H5页面唤醒本地APP的处理方式
- android webview加载H5页面丢失cookie信息的解决办法
- Android中使用WebView加载H5页面的方法
- android webview中嵌套的h5页面下载apk
- android使用webview加载H5页面
- Android之WebView 防止调用系统浏览器打开页面
- Webview获取连续H5页面的标题
- Android WebView页面中点击H5页面没有响应问题。
- h5页面打开APP
- Android 7.0系统webview 显示https页面空白处理
- android webview打开本地图片上传
- 当页面图片不存在时的处理方法
- 如何准确判断 WebView 加载完成
- 用PDB库调试Python程序
- oracle where条件分支查询
- Maven POM文件详解以及继承关系
- compileSdkVersion、minSdkVersion 以及 targetSdkVersion 的含义
- H5页面打开android本地照册,当webview页面被系统回收的情况下,如何处理图片
- 最大/最小堆排序
- oracle SGA总结信息
- msvcp140.dll
- http://blog.csdn.net/uxyheaven/article/details/48009197
- CSS NAV页面效果总结
- Spring MVC必知点
- js 通过调用方法终止js代码继续执行的问题(采用throw解决)
- CSS td里面两个input不换行设置(white-space: nowrap)