1. android WebView 网页上传文件(图片资源等)
    网页访问本地资源有两种方法:1可以通过js互调,原生代码提供对应的方法;2网页中标签,访问本地资源。

    本文主要讲的就是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;            }        }    }
  1. 在WebView设置好 setWebChromeClient(wvcc);

在具体项目中已使用。

更多相关文章

  1. android EditText设置不可写
  2. android 使用html5作布局文件: webview跟javascript交互
  3. android studio调试c/c++代码
  4. Android(安卓)Resource介绍和使用
  5. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  6. 锁屏界面
  7. Android(安卓)Chromium WebView html js 开发系列
  8. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  9. Android(安卓)version and Linux Kernel version

随机推荐

  1. Appium移动自动化框架初探
  2. Android学习系列一用按钮实现显示时间
  3. 谷歌宣布Android(安卓)Studio将取代Eclip
  4. Android(安卓)蓝牙相关开发
  5. Android(安卓)实现锚点定位
  6. Android布局整合include界面控件
  7. android kotlin webview内H5调用微信支付
  8. android sqlite支持的数据类型
  9. android GSM+CDMA基站定位--获取移动网络
  10. 简单理解View的onMeasure过程