概述
前言
之前有过这个需求,但是好久没写了 忘了 这次算是一个记录吧 也写给迷茫中的你
之前我记得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 WebView 打开相册1.了解类型2.上代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复