WebView download 文件

关于WebView加载H5页面下载文件和下载完毕后自动打开文件 前段时间有个项目需要在H5页面里下载文档文件,由于项目需求这里采用Android系统自带DownloadManager来进行后台自动下载管理,我们只需要稍微设置几个参数就进行文件下载了,并且下载进行时和下载完成后会有通知显示,话不多说直接上代码: 由于是WebView中的操作,这里需要监听WebView的下载监听,每当WebView中有下载操作都会回调这个方法,代码如下: 上面代码中只有要下载... 阅读详情

第一种:


android自带播放器支持“边下载边播放”的功能,当你使用系统浏览器点击一个“MP3的下载链接”时,它就会自动播放这首歌曲并保存到本地(不知道用第三方浏览器是否也如此,笔者认为应该是系统浏览器会自动识别MP3下载链接,并调用系统播放器来播放)。


  与这个过程类似,在笔者做的音乐播放器中,当用户选择“歌曲下载”时,会转到一个webview中,这里我将webview的初始url定向到“自定义”当点击MP3的下载链接时,就会将音乐下载到sdcard的根目录。webview所在 activity的代码如下:

Java代码:
  1. setContentView(R.layout.web);
  2. web = (WebView)findViewById(R.id.web);
  3. web.setWebViewClient(new DownLoadWebViewClient(this));
  4. WebSettings s = web.getSettings();

  5. s.setSaveFormData(false);
  6. s.setSavePassword(false);
  7. s.setUseWideViewPort(true);
  8. s.setJavaScriptEnabled(true);
  9. s.setLightTouchEnabled(true);

  10. web.setWebChromeClient(new WebChromeClient() {
  11. public void onProgressChanged(WebView view, int progress) {
  12. //Activity和Webview根据加载程度决定进度条的进度大小
  13. //当加载到100%的时候 进度条自动消失
  14. context.setProgress(progress * 100);
  15. }

  16. });
  17. web.loadUrl("http://www.top100.cn/");
复制代码
web.setWebViewClient(new DownLoadWebViewClient(this));其中DownLoadWebViewClient就使我们下载MP3文件的关键,它继承自 WebViewClient,这里我们Override它的public boolean shouldOverrideUrlLoading(WebView view, String url)方法,在方法中我们判断点击的链接时否为“下载MP3文件”,如果成立,则启动一个service来下载mp3文件,代码如下:

Java代码:

  1. public class DownLoadWebViewClient extends WebViewClient {
  2. private Context context;
  3. public DownLoadWebViewClient(Context context){
  4. this.context = context;
  5. }

  6. @Override
  7. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  8. Log.i("info", "open an url");
  9. String urlStr = "";
  10. //存放解码后的url
  11. //如果是utf8编码

  12. if (isUtf8Url(url)){
  13. urlStr = Utf8URLdecode(url);
  14. //如果不是utf8编码
  15. } else {
  16. urlStr = URLDecoder.decode(url);
  17. }

  18. //如果链接是下载top100.cn中的mp3文件
  19. if (url.substring(url.length()-4).equals(".mp3")&&url.substring(7,10).equals("221")){
  20. Log.i("info", "mp3 file");
  21. String ss[] = urlStr.split("/");
  22. String musicName = ss[ss.length-1]; //得到音乐文件的全名(包括后缀)
  23. Log.i("info", "musicfile: " + musicName);
  24. //将下载链接和文件名传递给下载模块
  25. Intent intent = new Intent(context,DownLoadService.class);
  26. intent.putExtra("url", url);
  27. intent.putExtra("musicName", musicName);
  28. context.startService(intent);
  29. }
  30. return super.shouldOverrideUrlLoading(view, url);

  31. }
复制代码
这里略去了url解码的相关方法。其中DownLoadService用于下载MP3文件并在,它接收DownLoadWebViewClient传递来的url和音乐文件名,代码如下:

Java代码:

  1. public class DownLoadService extends Service implements Runnable{ //实现Runable接口

  2. private String URL_str; //网络歌曲的路径
  3. private File download_file; //下载的文件
  4. private int total_read = 0; //已经下载文件的长度(以字节为单位)
  5. private int readLength = 0; //一次性下载的长度(以字节为单位)
  6. private int music_length = 0; //音乐文件的长度(以字节为单位)
  7. private boolean flag = false; //是否停止下载,停止下载为true
  8. private Thread downThread; //下载线程
  9. private String musicName; //下载的文件名

  10. @Override
  11. public IBinder onBind(Intent intent) {
  12. return null;
  13. }

第二种:


  在做美图欣赏Android应用的时候,其中有涉及到Android应用下载的功能,这个应用本身其实也比较简单,就是通过WebView控制调用相应的WEB页面进行展示。刚开始以为和普通的文件下载实现,只需要一个链接,然后点击就可以实现下载了,可是放到手机上试的时候,点击下载链接一点反应都没有,在普通页面里面点击是好的,且点击其它的普通链接是可以正常工作的。原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置WebView的DownloadListener,通过实现自己的DownloadListener来实现文件的下载。具体操作如下:

    1、设置WebView的DownloadListener:

    webView.setDownloadListener(new MyWebViewDownLoadListener());

    2、实现MyWebViewDownLoadListener这个类,具体可以如下这样:    

  1. private class MyWebViewDownLoadListener implements DownloadListener {  
  2.   
  3.         @Override  
  4.         public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,  
  5.                                     long contentLength) {  
  6.             Uri uri = Uri.parse(url);  
  7.             Intent intent = new Intent(Intent.ACTION_VIEW, uri);  
  8.             startActivity(intent);  
  9.         }  
  10.   
  11.     }  
    这只是调用系统中已经内置的浏览器进行下载,还没有WebView本身进行的文件下载,不过,这也基本上满足我们的应用场景了。

WebView中实现下载DownloadManager WebView中实现下载WebView本身是没有下载的,那如果要实现下载怎么办。WebView有个接口,一旦loadUrl发现无法render,一般是下载url, 通过setDownloadListener可以自己处理下载任务。 public void setDownloadListener (DownloadListener listener) Registers the interface 阅读详情

相关推荐

DDR内存Prefetch机制详解:从DDR1到DDR4的技术演进与性能提升

本文深入解析DDR内存Prefetch机制从DDR1到DDR4的技术演进与性能提升。通过分析Prefetch技术的实现原理与Burst传输的协同机制,揭示DDR1的2n Prefetch、DDR2的4n Prefetch、DDR3的8n Prefetch以及DDR4的Bank Group架构创新如何显著提升内存带宽与系统性能。

weixin_30369041的博客 537

Android 之 WebView 文件下载

本节给大家介绍的是WebView下载文件的知识点,当我们在使用普通浏览器的时候,比如UC, 当我们点击到一个可供下载链接的时候,就会进行下载,WebView作为一个浏览器般的组件, 当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名 保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome,UC等等!下面给大家演示下用法!Log.e("HEHE", "开始下载~~~~~");Log.e("HEHE", "下载完毕~~~~");Log.e("HEHE","开始下载");

leyang0910的博客 2675

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

kotlin 下载文件bin问题解决办法

有了下载链接就可以自己实现网络部分,自定义下载实现的方式有很多,根据你的项目框架选择自定义方式。// 传递两个参数:URL 和 目标路径@Overridelog.info("开始下载");= null) {try {@Overridelog.info("完成下载");= null) {// 使用。

1305

【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据

在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式(1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hive 的外部表和内部表 schema那么现在,有了 Paimon ,我们可以利用其特性,自动识别并同步 DDL 这些变化,并同步至 hive 的 paimon 格式表中。

欢迎来到我的博客,一起探索代码里的世界! 1250

《YOLOv8:从入门到实战》报错解决 & 专栏答疑

《YOLOv8:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专栏答疑,针对同学们在学习过程中所提出的问题进行汇总记录,并不断实时更新,希望能够帮助到大家!🌈

小哥谈 1241

android webview 设置下载文件,Android WebView使用之文件下载

前言这一篇介绍下WebView的下载,当我们在使用普通浏览器的时候,比如UC, 当我们点击到一个可供下载链接的时候,就会进行下载,WebView作为一个浏览器般的组件, 当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名 保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome,UC等等!使用其它浏览器下载WebView默认没有开启文件下载的功能,如果要实现文...

weixin_32578799的博客 3420

Verilog HDL 100道面试题及参考答案

在 Verilog HDL 中,参数(parameter)和宏定义(define)都可用于定义常量,但它们存在诸多不同之处。参数(parameter)是模块内部的常量定义,具有局部性。它在模块内部起作用,不同模块可以有同名的参数,且值可以不同。参数通常用于定义模块的一些配置信息,例如数据位宽、延迟时间等。参数的定义和使用是在模块的作用域内进行的,通过参数传递可以方便地对模块进行配置。endmodule在上述代码中,WIDTH是一个参数,用于定义加法器的位宽。通过改变WIDTH。

大模型大数据攻城狮的专栏 1734

WebView实现文件下载功能

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138056的博客 754

matlab计算图像信噪比SNR

【代码】matlab计算图像信噪比SNR。

baidu_34971492的博客 1396

CATIA二次开发一一一计算 CATIA 零件模型在全局坐标系下的包围盒方法

本文介绍了一种在CATIA中计算零件模型全局坐标系下包围盒(BoundingBox)的方法。通过遍历零件几何体特征点,并应用坐标变换矩阵,最终返回精确的零件包围盒。核心步骤包括初始化与输入校验、坐标变换处理、几何体特征点遍历以及全局坐标变换。关键方法涉及CATMathBox操作和坐标变换接口。该方法适用于碰撞检测、可视化优化和装配分析等场景,能够快速判断零件间的空间干涉,提升渲染性能,并计算零件在装配体中的全局位置范围。

工业软件开发 894

Android WebView 无法下载文件的问题

在我们日常开发中,会遇到需要下载通过webView加载的文件链接,但是,当我们点击链接的时候可能没有反应,因为我们的WebView不支持下载功能的,所以点击无反应,但是,WebView提供了一个点击下载的监听接口:DownloadListener,通过设置这个监听,当我们点击链接时,可以自定义我们的事件,如果自己需要处理下载,拿到url之后可以进行下载,如果自己不进行下载,可以跳转外部浏览器进行下载。以下是使用步骤: 1.设置监听 webView.setDownloadListener(new MyDo

qq_33372370的博客 4570

Ardupilot飞控姿态角与姿态角速度控制过程分析(超长篇)

目录 目录 摘要 1.代码控制过程分析 摘要 本节主要记录自己学习ardupilot飞控代码的姿态角速度的控制过程 1.代码控制过程分析 可以看出:AC_AttitudeControl *attitude_control; //指针对象 virtual void rate_controller_run() = 0;是AC_AttitudeContro...

陌城烟雨 1万+

安卓开发:WebView下载文件

实现的效果图如下: 新建activity_main.xml:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" a

new_Aiden的博客 1500

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AgentWeb混合开发终极指南:5大技巧让WebView与原生组件完美融合

AgentWeb是一个基于Android WebView的强大库,专为混合开发而设计,提供了Android WebView一系列的问题解决方案。作为Android开发者的终极混合开发利器,AgentWeb让WebView与原生组件完美融合变得简单高效。无论你是刚接触混合开发的新手,还是需要优化现有应用的老手,本指南将为你揭示5大核心技巧,帮助你在Android应用中实现无缝的Web与原生交互。

gitblog_00290的博客 814

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android webview 下载文件

android webview不能直接下载文件 所以要实现下载文件要调用内置浏览器如下 private class MWebViewDownLoadListener implements DownloadListener { @Override public void onDownloadStart(String url, String userAgent,

靠谱青年 2387

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【微信小程序】webview内嵌H5中回调小程序原生方法实现GET请求获取的文件流预览功能

*解决方案:**在webview中引入微信所需要的的SDK,目的是和微信小程序进行互动,将下面代码直接扔进H5的index.html中。参考微信的原生方法**wx.getFileSystemManager().readFile()**将文件读取到临时文件夹中产生临时路径。微信小程序的主体内容使用了标签将H5的页面内容展示,H5中有页面存放了下载的路径。pages/upload/page页面处理方式,在onload方法完成对小程序中webview页面参数的赋值,这里使用的是。进行文件的的下载,然后通过。

qq_35170037的博客 1451

android webview 文件下载,Android webview:像浏览器一样下载文件

我正在开发一个Android应用程序,其webview指向另一个团队的动态网站.当我下载一个文件(主要是动态重定向的PDF和ZIP)时,我得到的是下载文件夹中的一个文件,其中包含一些HTML代码,其中包含“用户不允许读取文件”的消息,无论我如何实现下载,我尝试:> DownloadManager>意图(让外部浏览器管理下载)>“手工”(AsyncTask和httpconnecti...

weixin_42398055的博客 378

Android webview支持获取本地图片或拍照

Android webview支持获取本地图片或拍照 package com.wshoto.user.anyong.ui.activity; public class BBSActivity extends InitActivity { @BindView(R.id.wv_bbs) WebView mWvBbs; private ValueCallback<Uri...

像风,行了八万里,不问归期。 565

android webview浏览器下载文件,Android 浏览器 —— 使用 WebView 实现文件下载

对当前的WebView设置下载监听mCurrentWebView.setDownloadListener(newDownloadListener() {@Overridepublic void onDownloadStart(final String url, String userAgent, String contentDisposition, String mimetype, longcon...

weixin_28994935的博客 1005

WebView控件中的javascript与Android本地功能交互

方法一: http://blog.chinaunix.net/uid-26063552-id-3425604.html 方法二:

壹口尘埃 879

WebView中实现文件下载功能

WebView控制调用相应的WEB页面进行展示。当碰到页面有下载链接的时候,点击上去是一点反应都没有的。原来是因为WebView默认没有开启文件下载的功能,如果要实现文件下载的功能,需要设置WebView的DownloadListener,通过实现自己的DownloadListener来实现文件的下载。具体操作如下: 1、设置WebView的DownloadListener: ...

weixin_30241919的博客 222

安卓使用WebView下载文件,安卓实现软件升级功能

由于调用系统默认浏览器下载更新,造成用户体验非常不好,所以决定在webview中直接下载系统更新。然后直接安装。 由于要下载,所以必须用webview,联网权限这里不说了,直接写在manifafest中。 我们经常使用的下载都是调用Android默认浏览器 这样写 1、设置WebView的DownloadListener: webV...

weixin_34248258的博客 177

(0095)iOS开发之本地文件预览的三种方法(3)

用功能强大的Webview来实现文件预览功能

沐雨07的专栏 637

WebView填坑之旅4--网页内下载

webView中下载,这个功能在我们的产品中还挺重要的,webView中默认的实现方式好像是跳转第三方应用打开,比如手机内置浏览器或者其他有下载能力的应用,我的实现呢,也是从最原始的方法到现在自己控制在webview中下载,效果的话当然是自己实现下载更好,talk is cheap,look the code:/** * Created by ly on 2017/9/9 10:15. */ p

xiaoerye的专栏 416

android webview href,Android Webview not triggering a href download fil

I have added the Download Manager , but it is not triggering the download event , can any body help . When user goes to webview download option and click a link to download a file nothing happens. I h...

weixin_39564386的博客 130
上一篇: 添加或删除程序 rundll32.exe-应用程序错误
下一篇: WebViewClient 与 WebChromeClient
shareCode
博客等级 码龄15年 125粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值