android webview js交互 调取本地相册(兼容各个版本)并且上传到服务器端。
来源:互联网 发布:建立网络英文怎么写 编辑:程序博客网 时间:2024/06/07 12:52
android webview js交互,调取本地相册,并且实现上传。
首先我们要理解整个互动过程,在网页webview的的组件是 input输入框,输入类型为file,点击-----> 调用安卓不同的版本
onShowFileChooser(5.0专用的方法,是隐性的),openFileChooser(3.0,4.0)这些都要写进去,是为了针对不同的安卓版本。
----->启动android系统自带的相册选择 ---->选择完成之后,回调 onActivityResult,这个方法很重要,里面有针对不同安卓版本的处理,特别是5.0 ,返回来的是一个URI数组,需要进行处理。废话不说上代码:
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b2 = new AlertDialog.Builder(WebViewActivity.this) .setTitle("友情提示:").setMessage(message) .setPositiveButton("ok", new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); // MyWebView.this.finish(); } }); b2.setCancelable(false); b2.create(); b2.show(); return true; } @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { umUploadMessages = filePathCallback; mfileChooserParams = fileChooserParams; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.putExtra("return-data", true); i.setType("image/*"); i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(Intent.createChooser(i, "选择相册"), FILECHOOSER_RESULTCODE_5); return true; } // For Android 3.0 public void openFileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.putExtra("return-data", true); i.setType("image/*"); i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(Intent.createChooser(i, "选择相册"), FILECHOOSER_RESULTCODE); } // For Android > 4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { Toast.makeText(WebViewActivity.this,"你大爷的",Toast.LENGTH_SHORT).show(); mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.putExtra("return-data", true); i.setType("image/*"); i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(Intent.createChooser(i, "选择相册"), FILECHOOSER_RESULTCODE); } // Andorid 3.0 + public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.putExtra("return-data", true); i.setType("image/*"); i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(Intent.createChooser(i, "选择相册"), FILECHOOSER_RESULTCODE); } });回调处理:
/** * 取照片完成之后的回选调 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == FILECHOOSER_RESULTCODE) { if (null == mUploadMessage) return; if (null == data){ mUploadMessage.onReceiveValue(null); mUploadMessage = null; }else{ Uri result = data == null || resultCode != RESULT_OK ? null : data.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; } }else if (requestCode == FILECHOOSER_RESULTCODE_5){// 5.0适配,主要是因为5.0的返回参数不同。 // 处理5.0的callback if (umUploadMessages != null) { if (null != data) {// 5.0的处理方式不同,要注意。 ArrayList<String> resultList = data .getStringArrayListExtra("data"); umUploadMessages.onReceiveValue( mfileChooserParams.parseResult(resultCode, data)); umUploadMessages = null; } else { umUploadMessages.onReceiveValue(null); } } } }
0 0
- android webview js交互 调取本地相册(兼容各个版本)并且上传到服务器端。
- android 客户端通过选择本地相册和拍照上传本地图片到服务器端
- Android调取本地相册更改图片
- android 打开相机/打开相册(版本兼容)-获取照片,压缩100K一下保存到本地
- Android调取系统相册相机并进行裁剪,兼容到6.0
- ios与H5交互,H5调取本地相册图片
- android WebView和JS交互 本地存储
- Webview 兼容android4.4版本上传本地图片
- android中webview加载本地html并且相互交互
- Android应用开发-------------WebView(一)之WebView与服务器端的Js交互
- Android调取系统相册和相机照片设置到ImageView并上传到服务器
- Android webview与js交互上传图片
- iOS 调取本地相册/相机,剪裁图片进行头像上传
- Android 各个版本WebView
- Android 各个版本WebView
- Android 各个版本WebView
- Android 各个版本WebView
- Android 各个版本WebView
- webview打开图库并获取安卓文件图片
- Android开发入门书籍强烈推荐
- Activity的四种启动模式-图文并茂
- tyvj 1463 智商问题
- 传统企业互联网转型,引爆跨界IT管理的工具与经验
- android webview js交互 调取本地相册(兼容各个版本)并且上传到服务器端。
- 对utf-8字符串计算长度
- CORS 头缺少 'Access-Control-Allow-Origin'问题
- 算法小题目练习
- 剑指offer面试题之把数组排成最小的数
- Servlet运行原理及404、500、405异常原因和解决方法总结
- php +- month的坑
- Canvas(画布)、Paint(画笔) 详解
- 在文本的特征选择中学习到的东西——构建词典