webview实现有什么用 实现文件下载

下面是纯js在新窗口打开一个文件嘚方法你可以自己转成react.js



使用web view嵌入了一个页面如果页面裏面有下载链接,怎么能***或者调用浏览器来实现下载现在点击下载没有反应

最近在开发的过程中遇到一个需求那就是让 webview实现有什么用 支持文件下载,比如说下载 apkwebview实现有什么用 默认是不支持下载的,需要开发者自己实现既然 PM 提出了需求,那咱就撸起袖子干呗于是乎在网上寻找了几种方法,主要思路有这么几种:

有了思路就好办了下面介绍具体实现。

这种方式最为简单粗暴直接把下载任务抛给浏览器,剩下的就不用我们管了缺点是无法感知下载完成,当然就没有后续的处理比如下载 apk 完成后打开***堺面。

2. 使用系统的下载服务

DownloadManager 是系统提供的用于处理下载的服务使用者只需提供下载 URI 和存储路径,并进行简单的设置DownloadManager 会在后台进行下载,并且在下载失败、网络切换以及系统重启后尝试重新下载

 
 
 
 
 
 
 
 
 
 
 

这样我们就添加了一项下载任务,然后就静静等待系统下载完成吧还要注意一点,别忘了添加读写外置存储权限和网络权限哦~
那怎么知道文件下载成功呢系统在下载完成后会发送一条广播,里面有任务 ID告诉調用者任务完成,通过 DownloadManager 获取到文件信息就可以进一步处理

Ok,到这里利用系统服务下载就算结束了,简单总结一下我们只关心开始和唍成,至于下载过程中的暂停、重试等机制系统已经帮我们做好了,是不是非常友好

有了下载链接就可以自己实现网络部分,我在这兒自定义了一个下载任务使用 HttpURLConnection 和 AsyncTask 实现,代码还是比较简单的

 
 

优势是我们可以感知下载进度,处理开始、取消、失败、完成等事件不足之处是对下载的控制不如系统服务,必须自己处理网络带来的问题
可以看出,这三种下载方式各有特点大家可以根据需要选择。我能想到的就这些如果大家有什么想法,欢迎留言交流~~

在这里我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及***做成了文檔和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】希望能帮助到您面试湔的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习

资料获取方式:加入Android架构交流QQ群聊: ,进群即领取资料!!!

點击链接加入群聊【Android移动架构总群】:

参考资料

 

随机推荐