android WebView的网页上传文件
16lz
2022-10-05
android WebView 网页上传文件(图片资源等)
网页访问本地资源有两种方法:1可以通过js互调,原生代码提供对应的方法;2网页中标签,访问本地资源。本文主要讲的就是2 。
具体代码(以Webview在Activity中为列)
ValueCallback mUploadMessages; ValueCallback mUploadMessage; int FILECHOOSER_RESULTCODE = 100; WebChromeClient wvcc = new WebChromeClient() { // For Android 3.0- public void openFileChooser(ValueCallback uploadMsg) { Log.d(TAG, "openFileChoose(ValueCallback uploadMsg)" ); mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); } // For Android 3.0+ public void openFileChooser( ValueCallback uploadMsg, String acceptType ) { Log.d(TAG, "openFileChoose( ValueCallback uploadMsg, String acceptType )"); mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult( Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE); } //For Android 4.1 public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture){ Log.d(TAG, "openFileChoose(ValueCallback uploadMsg, String acceptType, String capture)" ); mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult( Intent.createChooser( i, "File Browser" ), FILECHOOSER_RESULTCODE ); } // For Android 5.0+ public boolean onShowFileChooser (WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { Log.d(TAG, "onShowFileChooser(ValueCallback uploadMsg, String acceptType, String capture)" ); mUploadMessages = filePathCallback; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE); return true; } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == FILECHOOSER_RESULTCODE ) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ if (null == mUploadMessages ) return; mUploadMessages.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data)); mUploadMessages = null; }else { if (null == mUploadMessage) return; Uri result = data == null || resultCode != RESULT_OK ? null : data.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; } } }
- 在WebView设置好 setWebChromeClient(wvcc);
在具体项目中已使用。
更多相关文章
- android EditText设置不可写
- android 使用html5作布局文件: webview跟javascript交互
- android studio调试c/c++代码
- Android(安卓)Resource介绍和使用
- IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
- 锁屏界面
- Android(安卓)Chromium WebView html js 开发系列
- android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
- Android(安卓)version and Linux Kernel version