在开发中有时候会用到H5调用本地图片或者相机,像第三方的实名认证,在线客服等等都需要上传图片。H5中只需要通过<input>
调用即可,ios是可以的实现的,不需要自己处理,除非客户端压缩图片,但是Android中需要自己处理,比较坑,本文记录H5调用本地图片或者相机的实现过程以及遇到的问题。
先看效果图
H5
H5主要是通过input
标签来获取图片
<input class="upload-input" accept="image/*" multiple required type="file" @change="chooseImg">
Android
通过WebView加载h5页面,监听WebView对应的方法,实现自己的逻辑。
WebView初始化,放开对应的权限
private fun initWebView() {
val settings = mWebView.settings
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
//自适应屏幕
settings.layoutAlgorithm = SINGLE_COLUMN
settings.loadWithOverviewMode = true
settings.domStorageEnabled = true
settings.databaseEnabled = true
settings.setSupportZoom(false)
mWebView.isHorizontalScrollBarEnabled = false
mWebView.isVerticalScrollBarEnabled = false
mWebView.webViewClient = webViewClient
mWebView.webChromeClient = webViewChromeClient
}
设置WebChromeClient
当点击input
标签的时候会调用WebChromeClient的onShowFileChooser()
方法(5.0+)或者