easyclick webview之上传文件

webview默认没有上传文件的处理,点击上传,咦!没反应,所以需要自己Diy

适配:Android API >= 21 (android 5.0) 以上机型

直接看代码,图我就不拍了,自己拿纸画吧。

1.html上传表单,随便你用什么控件框架,这里不例举了,

声明个全局变量var FILE_CHOOSER_RESULT_CODE=100

100,101,102……随便你任何感冒的数字。

2.webview对象,需要

webView.setWebChromeClient(
	new JavaAdapter(WebChromeClient, {
		onShowFileChooser: function (view, filePathCallback, fileChooserParams) {
			uploadMessage = filePathCallback;
			openImageChooserActivity();
			return true;
		},
	})
);

3.用到的openImageChooserActivity(),打开你的相册

function openImageChooserActivity() {
	let i = new Intent(Intent.ACTION_GET_CONTENT);
	i.addCategory(Intent.CATEGORY_OPENABLE);
	i.setType("image/*");
	ui.getActivity().startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);
}

其中,image/*指定了图片类型,你也可根据mime需要自行更换,具体参照第二中的fileChooserParams参数,这不重要,不详述。

4.打开相册选好图片就得onActivityForResult响应事件了。

ui.onActivityEvent("onActivityResult", function (requestCode,resultCode,data) {
	logd("onActivityResult"+requestCode);
	if (requestCode != FILE_CHOOSER_RESULT_CODE) {
		return false;
	}
	var uri = data.getData();
	let uriArr = java.lang.reflect.Array.newInstance(java.lang.Class.forName("android.net.Uri"), 1);
	uriArr[0] = uri;
	uploadMessage.onReceiveValue(uriArr);
	uploadMessage = null;
});

仅此而已,就这么简单。

参考:

https://www.jb51.net/article/104199.htm

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注