我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中怎么利用WebView上传文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中怎么利用WebView上传文件

今天就跟大家聊聊有关Android中怎么利用WebView上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

接收WebView打开文件选择器的通知

收到通知后,打开文件选择器等待用户选择需要上传的文件

在onActivityResult中得到用户选择的文件的Uri

然后把Uri传递给Html5

这样就完成了一次H5选择文件的过程,下面我把代码贴出来自习看一下

首先,WebView必须要支持JS交互,所以要打开JS交互

mWebView.getSettings().setJavaScriptEnabled(true);

当H5在调用上传文件的Api的时候,WebView会回调 openFileChooser和onShowFileChooser 方法来通知我们,我们这个时候要做的就是重写这个方法

需要注意的是这个方法在不同的Api上会回调不同行参方法

mWebView.setWebChromeClient(new WebChromeClient() {   @Override   public void onProgressChanged(WebView view, int newProgress) {    if (newProgress == 100) {     mBar.setVisibility(View.GONE);    } else {     mBar.setVisibility(View.VISIBLE);     mBar.setProgress(newProgress);    }    super.onProgressChanged(view, newProgress);   }   //For Android API < 11 (3.0 OS)   public void openFileChooser(ValueCallback<Uri> valueCallback) {    uploadMessage = valueCallback;    openImageChooserActivity();   }   //For Android API >= 11 (3.0 OS)   public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {    uploadMessage = valueCallback;    openImageChooserActivity();   }   //For Android API >= 21 (5.0 OS)   @Override   public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {    uploadMessageAboveL = filePathCallback;    openImageChooserActivity();    return true;   }  });

我们在openFileChooser方法中先保存了一下ValueCallback的回调对象,这个对象最后用来通知H5文件地址,我们之后在调用openFileChooser方法来打开文件选择器

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

当用户选择完文件后,会调用onActivityResult方法,我们重写并等待回调

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {  super.onActivityResult(requestCode, resultCode, data);  if (requestCode == FILE_CHOOSER_RESULT_CODE) {   if (null == uploadMessage && null == uploadMessageAboveL) return;   Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();   if (uploadMessageAboveL != null) {    onActivityResultAboveL(requestCode, resultCode, data);   } else if (uploadMessage != null) {    uploadMessage.onReceiveValue(result);    uploadMessage = null;   }  } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) {  if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null)   return;  Uri[] results = null;  if (resultCode == Activity.RESULT_OK) {   if (intent != null) {    String dataString = intent.getDataString();    ClipData clipData = intent.getClipData();    if (clipData != null) {     results = new Uri[clipData.getItemCount()];     for (int i = 0; i < clipData.getItemCount(); i++) {      ClipData.Item item = clipData.getItemAt(i);      results[i] = item.getUri();     }    }    if (dataString != null)     results = new Uri[]{Uri.parse(dataString)};   }  }  uploadMessageAboveL.onReceiveValue(results);  uploadMessageAboveL = null; }

看完上述内容,你们对Android中怎么利用WebView上传文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中怎么利用WebView上传文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中怎么利用WebView上传文件

今天就跟大家聊聊有关Android中怎么利用WebView上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.接收WebView打开文件选择器的通知2.收到通知后,打开文件选择
2023-05-30

Android WebView 上传文件支持全解析

默认情况下情况下,使用Android的WebView是不能够支持上传文件的。而这个,也是在我们的前端工程师告知之后才了解的。因为Android的每个版本WebView的实现有差异,因此需要对不同版本去适配。花了一点时间,参考别人的代码,这个
2022-06-06

怎么在Android中利用Retrofit 2.X 上传文件

怎么在Android中利用Retrofit 2.X 上传文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Body方式:1、Retrofit接口RetrofitInterf
2023-05-30

Android中怎么利用OkHttp上传文件到服务器

Android中怎么利用OkHttp上传文件到服务器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、编写服务器端在上一讲服务器下新建UploadFileServlet,代
2023-05-31

Android项目中如何在webview页面中上传文件

本篇文章为大家展示了Android项目中如何在webview页面中上传文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android webview在默认情况下是不支持网页中的文件上传功能的;如果
2023-05-31

Android WebView那些坑之上传文件示例

最近公司项目需要在WebView上调用手机系统相册来上传图片,开发过程中发现在很多机器上无法正常唤起系统相册来选择图片。 解决问题之前我们先来说说WebView上传文件的逻辑:当我们在Web页面上点击选择文件的控件(
2022-06-06

怎么利用​PHP中的 $_FILES上传文件

小编给大家分享一下怎么利用PHP中的 $_FILES上传文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP 中的$_FILESPHP全局$_FILES包含文
2023-06-14

Android 解决WebView无法上传文件的问题

Android 解决WebView无法上传文件的问题Android原生的WebView并不支持上传文件,需要我们自己实现相应的方法。于是我把工作中的相关代码记录下来。下次直接拿来用就行了。一点一滴都是经验。 1。需要定义三个变量 priva
2023-05-30

怎么在ajax中利用formdata流上传文件

今天就跟大家聊聊有关怎么在ajax中利用formdata流上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。//html如下//form1
2023-06-08

Android中的webview支持页面中的文件上传实例代码

Android webview在默认情况下是不支持网页中的文件上传功能的; 如果在网页中有,在android webview中访问时也会出现浏览文件的按钮 但是点击按钮之后没有反应... 那么如何能
2022-06-06

怎么在FormData中利用Ajax请求上传文件

这篇文章将为大家详细讲解有关怎么在FormData中利用Ajax请求上传文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Servlet3.0开始提供了一系列的注解来配置Servlet、Fi
2023-06-08

怎么在android中利用Webview实现截屏

怎么在android中利用Webview实现截屏?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一种方式通过调用webview.capturePicture()
2023-05-31

Android应用中怎么将文件上传到服务器

这篇文章将为大家详细讲解有关Android应用中怎么将文件上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1)、新建一个Android项目命名为androidUpload,目录结构
2023-05-31

android 中 webview 怎么用 localStorage

我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀 网上搜了好多都没效果mainWebView = (WebView)this.findViewById(R.id.mainWebView);W
2022-06-06

Android开发中本地html文件怎么使用webView打开

这期内容当中小编将会给大家带来有关Android开发中本地html文件怎么使用webView打开,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:在布局的配置文件里:
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录