Webview上传文件
来源:互联网 发布:淘宝好看的鞋子店铺 编辑:程序博客网 时间:2024/06/05 18:00
- 情景
- 实现
- 重写WebChromeClient 方法
- 处理选择返回值
- Webview上传文件没有反应
情景
需要在Webview中打开系统文件选择目录。即网页元素为: < input tyoe=”file” />,点击按钮应该打开系统的文件选择。
实现
1.重写WebChromeClient 方法
在 Webview.setWebChromeClient() 方法传入的参数 WebChromeClient 重写 openFileChooser() 或者 onShowFileChooser() …,返回true,处理情景中的点击事件,可以是打开系统文件、打开相机,比如下面的例子。
注意:这里的重写方法具体参照不同的SDK版本,下例只是适配了API 16+ 、API 21+,低版本应该现在也很少了。
/** * 提供接口HTML调用系统相册 API 16+ * * @author fengzhen * @version v1, 2017/4/5 18:10 */ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { asw_file_message = uploadMsg; Intent chooserIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(chooserIntent, asw_file_req); } /** * 提供接口HTML调用系统相册 API 21+ * * @author fengzhen * @version v1, 2017/4/5 18:10 */ public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { asw_file_path = filePathCallback; // 直接调用系统相册 Intent chooserIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(chooserIntent, asw_file_req); return true; } });
2.处理选择返回值
在onActivityResult()方法中处理返回值。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK) return; switch (requestCode) { case asw_file_req: // 结果处理 break; } }
3.Webview上传文件没有反应
单纯像上面那样处理,如果用户在文件选择按下返回键,会出现不能够再次进入文件选择的问题,需要在onActivityResult()添加如下代码:
/** * 文件选择界面取消选择图片,解决返回之后不能选择图片的问题 */ if (requestCode == asw_file_req && resultCode == RESULT_CANCELED) { if (asw_file_path != null) { asw_file_path.onReceiveValue(null); asw_file_path = null; } if (asw_file_message != null) { asw_file_message.onReceiveValue(null); asw_file_message = null; } }
阅读全文
1 0
- android webview上传文件
- webview上传文件
- webview的文件上传
- Android WebView 文件上传
- android webview上传文件
- WebView上传文件
- WebView上传文件
- Webview上传文件
- Andriod webview实现文件上传
- Andriod webview实现文件上传
- Andriod webview实现文件上传
- Andriod webview实现文件上传
- android 支持WebView上传文件
- android WebView上传文件代码
- Android WebView上传文件(转)
- webview上传文件,增加相机,录音机
- Android的webView支持文件上传
- android webview 嵌入html5 定位 文件上传
- 银行卡,信用卡
- Tsinsen A1020数列排序之简单排序(O(n^2))
- XListView下拉刷新与上拉加载数据还有该死的一大堆接口抽象类
- 联合权值(NOIP2014提高组 第一试 第二题)
- 扫描大图的一个脚本
- Webview上传文件
- XSS的攻关练习
- PgSQL · 特性介绍 · 列存元数据扫描介绍
- 社交系统ThinkSNS+预售活动结束倒计时
- 想入行大数据,如何才能学好Hadoop?
- C# 生成时间戳
- 搭建CentOS光盘yum源
- InnoDB存储引擎
- 每天一点积累(十)---JVM加载class