webview如何支持上传图片前预览图片

雅阁驸马 2014-05-10 11:20:29
如题目所表达,我现在要做一个webapp,在webview上要显示一个网站,网站里有上传图片的功能,上传图片前可以对上传的图片预览,我给出上传图片的js代码

<script type="text/javascript">
document.getElementById('inputPics0').onchange = function (evt) {

// 如果浏览器不支持FileReader,则不处理
if (!window.FileReader) { alert("不支持"); return; }
var files = evt.target.files;


var fileType = files[0].type;
/* if (fileType.indexOf("image") == -1) {
alert('请选择图片文件)');
return;
}

*/
var reader = new FileReader();

reader.onload = function (e) {

$('#addpicli').show();
//$('#addpicimg').attr('src',this.result);
document.getElementById("addpicimg").src=this.result;
}
reader.readAsDataURL(files[0]);


}
</script>

实现如图的功能:

点击加号那个图片后,选择好你要添加的图片:

下面是我的部分android代码:

this.wv_myweb.setWebChromeClient(new WebChromeClient (){

// Android > 4.1.1 调用这个方法
public void openFileChooser(ValueCallback<Uri> uploadMsg,
String acceptType, String capture) {
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
MyWebActivity.this.startActivityForResult(Intent.createChooser(intent, "File Chooser"), FILECHOOSER_RESULTCODE);
System.out.println("1");
}


//扩展浏览器上传文件
//3.0++版本
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MyWebActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
System.out.println("2");
}

// Android < 3.0 调用这个方法
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
MyWebActivity.this.startActivityForResult(Intent.createChooser(intent, "File Chooser"), FILECHOOSER_RESULTCODE);
System.out.println("3");
}

});

它实现了选取文件的功能,下面是onActivityResult

protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {

if (mUploadMessage == null)
return;

Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
if (result!=null){

String filePath = null;

if ("content".equals(result.getScheme())) {

Cursor cursor = this.getContentResolver().query(result, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
cursor.moveToFirst();
filePath = cursor.getString(0);
cursor.close();
System.out.println(filePath);

} else {
System.out.println(filePath);
filePath = result.getPath();

}

Uri myUri = Uri.parse(filePath); System.out.println(myUri);
mUploadMessage.onReceiveValue(myUri);

} else {

mUploadMessage.onReceiveValue(result);

}

mUploadMessage = null;
}
}

现在有一个问题就是,在我的htc android 4.0.1上可以成功添加,但是在android 4.1.2上,点击添加按钮,选择好图片以后,没有反应。截图是我在pc上截图的,在pc任意浏览器都能实现点击添加图片并预览,但是在手机上,我测了两个机子,4.0.1上可以,4.1.2上不可以。
...全文
451 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinVector 2016-05-31
  • 打赏
  • 举报
回复
估计是少加了这一句吧:
webView.getSettings().setJavaScriptEnabled(true);
雅阁驸马 2014-05-15
  • 打赏
  • 举报
回复
我纳闷的是,猎豹浏览器跟uc跑我这个页面,可以实现预览,我特别想知道这是为啥,我写的这个webview就相当于一个简易的浏览器,
雅阁驸马 2014-05-15
  • 打赏
  • 举报
回复
不是用webview+js来做的,webview只是简单的做一个现实页面的东西而已,所有的包括上传,显示等功能全由js完成,我现在要做的是一个webapp,你说的:2.点击其中的一张图片,显示缩略图预览,这个是纯android实现,显示略缩图,android上没有空间让你显示的,因为webview是占据整个屏幕的,就算有,空间上也不好调整,
唯你Only 2014-05-13
  • 打赏
  • 举报
回复
这个是用webview+js方式来做的么?我的思路如下: 1.网页中点击+号,弹出图片列表,选择其中一张图片(js调用android的图片显示接口) 2.点击其中的一张图片,显示缩略图预览,这个是纯android实现 3.将图片 http传送给服务器,android代码来做 4.上传成功之后刷新页面,显示刚刚上传的图片。
雅阁驸马 2014-05-13
  • 打赏
  • 举报
回复
谢谢,我觉得webapp是一个趋势,对于某些视觉效果要求不高的应用,完全可以实现跨平台,只是现在搞这个的人貌似不多,
十三邵 2014-05-12
  • 打赏
  • 举报
回复
如题目所表达,我现在要做一个webapp,在webview上要显示一个网站,网站里有上传图片的功能,上传图片前可以对上传的图片预览,我给出上传图片的js代码 我也不会,帮你顶一下吧。。。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧