android系统webview最新版本_webview加载h5页面空白

android系统webview最新版本_webview加载h5页面空白做android聊天时,遇到过一个问题,h5的页面发送的图片在android端不能响应,ios那边一路畅通。也是相当无奈,目前发现了好多android端与ios端webView的异同。android端与ios确的不同大致包括:1:android不能直接打开html的下载文件,需要先下载保存本地在打开本地文件2:android不能直接打开pdf文件,同样要下载再打开3:如题,h5页面的发送图片按钮点…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

做android聊天时,遇到过一个问题,h5的页面发送的图片在android端不能响应,ios那边一路畅通。也是相当无奈,目前发现了好多android端与ios端webView的异同。

android端与ios确的不同大致包括:

1:android不能直接打开html的下载文件,需要先下载保存本地在打开本地文件

2:android不能直接打开pdf文件,同样要下载再打开

3:如题,h5页面的发送图片按钮点击没反应,ios却可以

4:android可以postUrl,ios不行,需要js混合开发

下面简单说下第三点。

1:出现的原因:

H5 访问本地文件的时候,使用的 ,WebView 出于安全性的考虑,限制了以上操作

2:解决方法

重写 WebviewChromeClient 中的 openFileChooser() 和 onShowFileChooser()方法响应,然后使用原生代码来实现调用本地相册和拍照的功能,最后在 onActiivtyResult 把选择的图片 URI 回传给 WebviewChromeClient。

3:大致步骤

1.弹出对话框选择相机或相册

2.调用系统相册的实现代码

3.调用系统相机拍照的实现代码

4.需要兼容 6.0 的动态权限问题和 7.0 的文件管理问题。

5.相机拍照后的图片上传后要进行删除,以免占用手机存储空间

chatWebView.setWebChromeClient(new WebChromeClient() {

@Override

public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {

Log.d(“ChatFragment”, “filePathCallback>>>>>” + filePathCallback);

mUploadCallbackAboveL = filePathCallback;

uploadPicture();

return true;

}

//For Android >= 4.1

public void openFileChooser(ValueCallback valueCallback, String acceptType, String capture) {

mUploadMessage = valueCallback;

//调用系统相机或者相册

uploadPicture();

}

}

);

upload()方法是打开打开相册等系列操作,常规操作就省略了,其中两个参数mUploadMessage和mUploadCallbackAboveL是用来处理获取图片等文件的Uri之后传递给Js操作的。之后再onActivityResult()方法里处理结果

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case CHOOSE_PHOTO:

if (resultCode == RESULT_OK) {

Uri uri = data.getData();

if (uri != null) {

uploadImage(uri);

}

} else{

uploadImage(null);

}

break;

case TAKE_PHOTO:

if (resultCode == RESULT_OK) {

Uri uri = Uri.fromFile(mTmpFile);

if (uri != null) {

uploadImage(uri);

}

}else{

uploadImage(null);

}

break;

default:

break;

}

}

private void uploadImage(Uri uri) {

if (mUploadMessage != null) {

mUploadMessage.onReceiveValue(uri);

mUploadMessage = null;

}

if (mUploadCallbackAboveL != null) {

if(uri!=null){

mUploadCallbackAboveL.onReceiveValue(new Uri[]{uri});

}else{

mUploadCallbackAboveL.onReceiveValue(null);

}

mUploadCallbackAboveL = null;

}

}

upLoadImage(Uri uri)方法是将图片传递给JS,之后的逻辑交给Js处理。注意取消选择文件操作的时候同样要调该方法,但是参数传null.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190619.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月17日 上午11:22
下一篇 2026年2月17日 下午12:01


相关推荐

  • [Java]finalized方法

    [Java]finalized方法今天底层报了一个 nullupcall 问题 查来查去发现是 JNI 没有保持对象的引用 然后被 JVM 回收了 导致出现了空指针 在查问题的过程中提交了 C 的析构函数 然后映射到了 finalized 所以顺便研究了了一下 为了以后可以看到 写下来吧 写在开始 这个方法官方都不推荐了 所以知道原理就可以了 没必要太深入了解 面试的时候 finalized 经常跟 final

    2026年3月18日
    3
  • python中用turtle画一个圆形(pythonturtle教程)

    最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。先看完成的图形和代码。代码如下:importturtlewindow=turtle.Scr…

    2022年4月14日
    352
  • 10种方法缓解所显示器造成的眼睛疲劳

    10种方法缓解所显示器造成的眼睛疲劳

    2021年9月18日
    46
  • Redis 客户端 Hiredis 简介

    Redis 客户端 Hiredis 简介学习总结一下官方发布的 C 版本客户端 hiredis 了解 hiredis 客户端大致实现细节 在理解代码之间需要了解通信协议的特点 我上一篇转载的文章已经有过介绍 大家可以去看一下 hiredis 提供了同步 异步访问 异步 API 需要与一些事件库协同工作 主要看一下同步 API 的实现 hiredis 与服务端通信的 API 比较简单 主要有这几个步骤 建立连接发送命令等待结果并处理

    2026年3月18日
    2
  • 电机控制foc算法讲解_电机算法需求

    电机控制foc算法讲解_电机算法需求最近做完了一个直流无刷电机的电机调速项目,查阅了各种大神所写的博客和论文,在这里我只做一下小小的总结;FOC(FiledOrientedControl)是采用数学方法实现三相马达的力矩与励磁的解耦控制。主要是对电机的控制电流进行矢量分解,变成励磁电流IdIdId和交轴电流IqIqIq,励磁电流主要是产生励磁,控制的是磁场的强度,而交轴电流是用来控制力矩,所以在实际使用过程中,我们常…

    2025年12月3日
    5
  • 项目复盘/总结模板

    项目复盘/总结模板复盘会议的安排、步骤及意义什么是复盘?为何要复盘?WHAT?复盘,是行动后的深刻反思和经验总结,是一个不断学习、总结、反思、提炼和持续提高的过程。复盘是企业文化、是行动学习、是提升组织智慧的重

    2022年8月3日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号