Android Webview实现图片、文件上传及启动相机功能
2015-04-29 23:56
906 查看
直接上代码,体会Webview强大的功能。
技术交流QQ群:6399844
webView.setWebChromeClient(webChromeClient);
private String mCameraFilePath = null; private ValueCallback<Uri> mUploadMessage;// 表单的数据信息 private final static int FILECHOOSER_RESULTCODE = 1;// 表单的结果回调</span>
private WebChromeClient webChromeClient = new WebChromeClient() { // For Android 3.0+ public void openFileChooser(ValueCallback<Uri> uploadMsg) { if (uploadMsg == null) { return; } mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); activity.startActivityForResult( Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); } // For Android 3.0+ public void openFileChooser(ValueCallback uploadMsg, String acceptType) { if (uploadMsg == null) { return; } mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); activity.startActivityForResult( Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE); } // For Android 4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { if (uploadMsg == null) { return; } mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); activity.startActivityForResult( Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); } private Intent createDefaultOpenableIntent() { // Create and return a chooser with the default OPENABLE // actions including the camera, camcorder and sound // recorder where available. Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); Intent chooser = createChooserIntent(createCameraIntent(), createCamcorderIntent(), createSoundRecorderIntent()); chooser.putExtra(Intent.EXTRA_INTENT, i); return chooser; } private Intent createChooserIntent(Intent... intents) { Intent chooser = new Intent(Intent.ACTION_CHOOSER); chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents); chooser.putExtra(Intent.EXTRA_TITLE, "File Chooser"); return chooser; } private Intent createCameraIntent() { Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File externalDataDir = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); System.out.println("externalDataDir:" + externalDataDir); File cameraDataDir = new File(externalDataDir.getAbsolutePath() + File.separator + "browser-photo"); cameraDataDir.mkdirs(); mCameraFilePath = cameraDataDir.getAbsolutePath() + File.separator + System.currentTimeMillis() + ".jpg"; System.out.println("mcamerafilepath:" + mCameraFilePath); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCameraFilePath))); return cameraIntent; } private Intent createCamcorderIntent() { return new Intent(MediaStore.ACTION_VIDEO_CAPTURE); } private Intent createSoundRecorderIntent() { return new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); } };
public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE) { if (null == mUploadMessage) return; Uri result = intent == null || resultCode != Activity.RESULT_OK ? null : intent.getData(); if (result == null && intent == null && resultCode == Activity.RESULT_OK) { File cameraFile = new File(mCameraFilePath); if (cameraFile.exists()) { result = Uri.fromFile(cameraFile); activity.sendBroadcast(new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, result)); } } mUploadMessage.onReceiveValue(result); mUploadMessage = null; } }
技术交流QQ群:6399844
相关文章推荐
- Android Webview实现图片、文件上传及启动相机功能
- Android WebView 选择图片并上传(调用相机拍照/相册/选择文件)
- android webview图片文件上传兼容性问题——上传控件点击无效的解决办法
- Android Retrofit实现多图片/文件、图文上传功能
- Android实现点击WebView界面中图片滑动浏览与保存图片功能
- Android WebView 上传图片文件有坑
- android webview 弹出图片选择器上传文件
- android webview图片文件上传——上传控件点击无效的解决办法
- Android WebView-H5交互上传文件(包括图片)
- Android WebView 上传各种文件(包括拍照 录像 录音 文件 音乐 等,用到图片或拍照的)
- 让Android的webview支持H5的图片上传,无需原生开发功能
- android项目从零开始 Android webview支持 文件上传、图片上传
- Android Webview实现文件下载功能
- Android webview打开本地图片上传实现代码
- Android 实现WebView点击图片查看大图列表及图片保存功能
- Android WebView实现长按保存图片及长按识别二维码功能
- Android WebView 上传图片文件有坑
- Android编程使用WebView实现文件下载功能的两种方法
- Android——UI篇:WebView里调用相机/文件选取照片并上传。
- 解决 react native 的 webview 组件不支持android客户端上传图片文件问题