博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让Android中的webview支持页面中的文件上传
阅读量:4511 次
发布时间:2019-06-08

本文共 2348 字,大约阅读时间需要 7 分钟。

android webview在默认情况下是不支持网页中的文件上传功能的;

如果在网页中有<input type="file" />,在android webview中访问时也会出现浏览文件的按钮

但是点击按钮之后没有反应...

那么如何能够让android的webview能够响应,这个浏览按钮呢?

我们需要为webview设置WebChromeClient,在WebChromeClient的实现类中覆盖文件选择的方法:

 

/***************** android中使用WebView来打开本机的文件选择器 *************************/		// js上传文件的事件捕获		// Android > 4.1.1 调用这个方法		public void openFileChooser(ValueCallback
uploadMsg, String acceptType, String capture) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } // 3.0 + 调用这个方法 public void openFileChooser(ValueCallback
uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } // Android < 3.0 调用这个方法 public void openFileChooser(ValueCallback
uploadMsg) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } /************** end ***************/

在设置WebChromeClient时,要传入一个ValueCallback<Uri> mUploadMessage,同时传入webview所在的Activity的对象;

 

在WebChromeClient的实现类中对应的文件选择事件响应的方法里,使用webview所在的activity对象开启一个android文件选择器,

使用startActivityForResult方法,在开启的文件选择activity结束后需要返回一个值;在webview所在的activity中通过覆盖Activity的onActivityResult方法,得到所需的结果,即选择文件的url

/**	 * 返回文件选择	 */	@Override	protected void onActivityResult(int requestCode, int resultCode,			Intent intent) {		if (requestCode == FILECHOOSER_RESULTCODE) {			mUploadMessage = wcci.getmUploadMessage();			if (null == mUploadMessage)				return;			Uri result = intent == null || resultCode != RESULT_OK ? null					: intent.getData();			mUploadMessage.onReceiveValue(result);			mUploadMessage = null;		}	}

完成上述操作后就成功的实现了android webview支持文件上传。。。

 

 

转载于:https://www.cnblogs.com/snake-hand/p/3148348.html

你可能感兴趣的文章
Xcode 4 with External Static Library for iPhone Development
查看>>
linux——常用命令清单
查看>>
JS 20180415作业
查看>>
项目追求更高的性能,更高的并发,更高的可用 (1)
查看>>
安卓 okhttp小结
查看>>
cocos2d-x 关于无法找到gl/gl.h头文件错误,以及r.java无法生成解决办法
查看>>
微信小程序——获取步数
查看>>
pycharm快捷键大全
查看>>
C++读取BMP文件
查看>>
20180821ImportContactFromExcel
查看>>
RedHat系列软件管理(第二版) --二进制软件包管理
查看>>
Ubuntu 12.04 LTS 屏幕亮度无法保存
查看>>
Maven 更换远程仓库地址
查看>>
SQL拼接大法
查看>>
第一阶段总结各组评价
查看>>
http & https & http/2 & SPDY & WebSocket
查看>>
[JLOI2013]卡牌游戏
查看>>
【题解】Luogu P2047 社交网络总结 (Floyd算法,最短路计数)
查看>>
rabbitmq vhost
查看>>
杂谈随笔
查看>>