前言
之前有过这个需求,但是好久没写了 忘了 这次算是一个记录吧 也写给迷茫中的你
之前我记得ios是可以直接打开的 但是Android不行 也是找了很多资料 经过不懈的努力 终于终于终于。。。嗯 呦西
1.了解类型
image 图片类型
video 视频类型
*/* 包含以上俩种
2.上代码
private ValueCallback<Uri> mUploadMessage; private ValueCallback<Uri[]> mUploadCallbackAboveL; private final static int FILECHOOSER_RESULTCODE = 101;
在WebView展示页面 创建
WebChromeClient 对象
private final WebChromeClient mWebViewClient = new WebChromeClient() {
@Override
public void openFileChooser(ValueCallback<Uri> valueCallback, String s, String s1) {
//Log.d(TAG, "openFileChoose(ValueCallback<Uri> uploadMsg, String acceptType, String capture)");
mUploadMessage = valueCallback;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
//如果选择图片就image 视频就video
i.setType("*/*");
CustomerServiceWebViewActivity.this.startActivityForResult(Intent.createChooser(i, "File Browser"),
FILECHOOSER_RESULTCODE);
}
};
重写 openFileChooser方法
接收结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage && null == mUploadCallbackAboveL) return;
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
if (mUploadCallbackAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data);
} else if (mUploadMessage != null) {
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
}
选择多张图片
private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {
if (requestCode != FILECHOOSER_RESULTCODE
|| mUploadCallbackAboveL == null) {
return;
}
Uri[] results = null;
if (resultCode == Activity.RESULT_OK) {
if (data == null) {
} else {
String dataString = data.getDataString();
ClipData clipData = data.getClipData();
if (clipData != null) {
results = new Uri[clipData.getItemCount()];
for (int i = 0; i < clipData.getItemCount(); i++) {
ClipData.Item item = clipData.getItemAt(i);
results[i] = item.getUri();
//Log.e(TAG, "onActivityResultAboveL: " + results[i].getPath());
}
}
if (dataString != null)
results = new Uri[]{Uri.parse(dataString)};
//Log.e(TAG, "onActivityResultAboveL: " + results.length);
}
}
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL = null;
return;
}
最后把WebChromeClient设置给WebView
mWebView.setWebChromeClient(mWebViewClient);
结束。
最后
以上就是糟糕滑板最近收集整理的关于Android WebView 打开相册1.了解类型2.上代码的全部内容,更多相关Android内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复