webView选择图片遇到的坑
1.兼容问题
2.上传至服务器后缀不正确
3.上传至服务器失败
4.去除webview默认提示框上的标题
最近项目需要用webView加载一个网页,之前此网页是在微信端加载的,现在放到我们的APP中。网页中有选择图片并上传的功能,但是碰到很多坑。
1.兼容问题
这个自行百度无非就是重写WebChromeClient里的几个方法![webView选择图片遇到的坑 webView选择图片遇到的坑](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE3Ny8wYTFlYjk4YjFiNmNjNDc3MWY4NTNjOWIxYmE4MWY3MS5wbmc=)
其中webCall不用管,是我的回调。然后重写Activity的onActivityResult方法接收到uri,调用onReceiveValue就行了
2.上传至服务器后缀不正确![webView选择图片遇到的坑 webView选择图片遇到的坑](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc5MC9lNTJkNGEzYjhhZTdjZjRlZGUwZWI3MmY0YzVkZGUzZS5KUEVH)
因为服务器对文件的后缀有判断,而我们获取的uri可能是这样的content://media/external/images/media/231321。截取最后面就没有了图片格式,这是不行的。因此,使用此方法转化一下(代码是网上百度的)
那么,拿着转换后的uri上传就不会有问题啦(InstallApkUtils.getUri方法不用管,是为了解决这个问题的点击打开链接)
3上传至服务器失败
因为服务器的js文件中使用h5中的localStorage,客户端的webview默认不支持,改下就好啦
4.去除webview默认提示框上的标题
这个百度百度就好了,重写WebChromeClient的这两个方法,返回自己写的Dialog
最后Demo献上点击打开链接(最近积分不够了,赚点分,只需1个积分哦)