DownloadManager 文件下载

2024-05-28 09:38
文章标签 下载 downloadmanager

本文主要是介绍DownloadManager 文件下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Download模块简介

首先,Android Download模块主要由两个部分构成:DownloadManager以及DownloadProvider。
DownloadManager:在Android L/M源码位置:frameworks/base/core/java/android/app/DownloadManager.java作用:提供接口供三方apk调用
DownloadManager在Android L/M源码位置:packages/providers/DownloadProvider/作用:具体下载的实现,包括相关文件下载信息的保存以及文件的下载。
二、DownloadManager介绍

1、静态内部类

DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类 -DownloadManager.Query和DownloadManager.Request。

DownloadManager.Request用来请求一个下载
DownloadManager.Query 用来查询下载信息
2、主要方法

DownloadManager主要提供了一下主要方法:

enqueue(Request request):执行下载,返回downloadId,downloadId可用于查询下载信息。
remove(long ids):删除下载,若下载中取消下载。会同时删除下载文件和记录。
query(Query query)查询下载信息
getMaxBytesOverMobile(Context context)通过移动网络下载的最大字节数
getMimeTypeForDownloadedFile(long id)得到下载的mineType
三、DownloadProvider分析

1、DownloadManager主要类介绍

DownloadProvider:将下载信息insert到DB,启动下载服务类DownloadService
DownloadService:下载服务类,调用下载信息类DownlaodInfo,如果信息存在,则更新;否则,则新建该对象
DownloadInfo:下载信息类,启动下载线程类DownloadThread
DownloadThread:下载线程类,真正负责下载的线程,每次启动一个任务都会创建一个新的下载线程对象。进行下载前的过程检查、网络监测、路径检查等,保存文件……

例子

final DownloadManager dManager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(“http://192.168.1.120:8080/mvp/com.goview.meineng_2.0.0_20.apk“);
//设置允许使用的网络类型,这里是移动网络和wifi都可以
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI);
//显示在下载界面,即下载后的文件在系统下载管理里显示
request.setVisibleInDownloadsUi(true);
//设置下载标题
request.setTitle(“meineng”);
//显示Notification
// request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
// 设置下载路径和文件名
request.setDestinationInExternalPublicDir(“download”, “com.goview.meineng_2.0.0_20.apk”);
request.setDescription(“软件新版本下载”);
request.setMimeType(“application/vnd.android.package-archive”);
// 设置为可被媒体扫描器找到
request.allowScanningByMediaScanner();
// 获取此次下载的ID
final long refernece = dManager.enqueue(request);

    // 注册广播接收器,当下载完成时自动安装IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);BroadcastReceiver receiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {long myDwonloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);if (refernece == myDwonloadID) {Intent install = new Intent(Intent.ACTION_VIEW);Uri downloadFileUri = dManager.getUriForDownloadedFile(refernece);install.setDataAndType(downloadFileUri, "application/vnd.android.package-archive");install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(install);}}};getActivity().registerReceiver(receiver, filter);

可以静态注册一个广播

这篇关于DownloadManager 文件下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010198

相关文章

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并