android支持html的<input type="file">标签
2012-08-18 19:25
811 查看
工作一段时间啦,每天查阅大量的资料,得到了一些平时书上,网上不多见的知识,在这里记录一下,方便自己也方便大家。
首先是html的<input type="file">标签,用于选中本地文件然后上传到服务器,很奇怪,这么重要的标签android的webview怎么会不支持,还好,它提供了一个接口,可以做这个,网上查过资料,是重写WebChromeClient的openFileChooser方法,但网上的Demo总不能运行,不能调用这个方法,很奇怪,最后终于解决啦,是因为3.0以上和以下版本的该方法参数不一样(晕,真能搞),最后终于解决啦,上代码:
首先是html的<input type="file">标签,用于选中本地文件然后上传到服务器,很奇怪,这么重要的标签android的webview怎么会不支持,还好,它提供了一个接口,可以做这个,网上查过资料,是重写WebChromeClient的openFileChooser方法,但网上的Demo总不能运行,不能调用这个方法,很奇怪,最后终于解决啦,是因为3.0以上和以下版本的该方法参数不一样(晕,真能搞),最后终于解决啦,上代码:
protected class myWebChromeClient extends WebChromeClient { // For Android 3.0+ public void openFileChooser( ValueCallback<Uri> uploadMsg, String acceptType ) { context.mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); context.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MainActivity.FILECHOOSER_RESULTC ODE ); } // For Android < 3.0 public void openFileChooser( ValueCallback<Uri> uploadMsg ) { context.mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); context.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MainActivity.FILECHOOSER_RESULTC ODE ); } } myWebView.setChromeClient(newmyWebChromeClient() );还有一个结果处理函数
@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE) { if (null == mUploadMessage) return; Uri result = intent == null || resultCode != RESULT_OK ? null: intent.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; } }
相关文章推荐
- android支持html的<input type="file">标签
- Android:让WebView支持<input type="file"…>元素,实现文件上传
- 关于JSP中单击任意标签弹出文件选择框(<input type="file"/>)的实现方法
- 使用<input type="file">实现文件上传
- <input type="file">定义样式并获取上传文件路径及指定文件类型
- <input type="file"/>如何获取判断获取文件后缀
- <input type="file" />浏览时只显示指定文件类型
- <input type="file" />accept属性列表
- <input type="file" />accept属性列表
- <input type="file">中怎设置按钮的样式
- <input type="file" />浏览时只显示指定文件类型
- <input type="file" name="filePath" />最简单的解决方法
- <form>标签只能作用一个<input type="hidden"/>?
- asp.net/c# 用<input type="file" />实现文件上传,multipart/form-data
- <input type="file" />浏览时只显示指定文件类型
- IE11也不再支持document.createElement("<input type='file' name='upload'/>");
- <input type="file" />浏览时只显示指定文件类型
- <input type="text"> and <html:text> 禁止复制
- Android WebView 支持H5图片上传<input type="file">
- <input type="file">更改 页面显示 浏览 为上传 .