Android使用DownloadManager下载文件

安卓DownloadManager下载视频并用VideoView播放 文章目录需要添加的权限DownloadManager下载VideoView播放 需要添加的权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt... 阅读详情

Android使用DownloadManager下载文件

前言

DownloadManager是处理长时间HTTP下载的系统服务,客户端可以将指定内容下载到某一特定的目录。DownloadManager会在后台进行下载工作,自己会处理下载失败、网络变换或系统重启等问题。接下来说一下如何使用DownloadManager。

代码实现

AndroidManifest.xml

AndroidManifest.xml中需要添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

MainActivity.java

使用DownloadManager下载指定url的文件:

package com.andlink.downloadtest;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DownloadManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    //下载地址必须用https
    private String apkUrl = "https://XXX.apk";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        downloadFile();
    }

    private void downloadFile() {
        DownloadManager downloadManager = (DownloadManager)getSystemService(this.DOWNLOAD_SERVICE);

		//通过DownloadManager.Request调整请求参数
        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(apkUrl));
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            request.setRequiresCharging(false).setAllowedOverMetered(true);
        }
        //request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); //可以指定在何种网络状态下进行下载
        
        //将下载任务加到队列
        long requestId = downloadManager.enqueue(request);

		//使用DownloadManager.Query可以查询下载状态
        DownloadManager.Query query = new DownloadManager.Query();
        query.setFilterById(requestId);
        try {
            boolean flag = true;
            while(flag) {
                Cursor cursor = downloadManager.query(query);
                if (cursor != null && cursor.moveToFirst()) {
                    int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); //获取下载状态
                    //String path = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); //获取保存路径
                    switch(status){
                        //判断下载状态
                        case DownloadManager.STATUS_SUCCESSFUL:
                            flag = false;
                            Log.d("Jason", "download success");
                            break;
                        case DownloadManager.STATUS_FAILED:
                            flag = false;
                            Log.d("Jason", "download fail");
                            break;
                    }
                }

                if(cursor != null) {
                    cursor.close();
                }
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}
Android 原生DownloadManager下载使用 【代码】Android 原生DownloadManager下载使用。 阅读详情

相关推荐

Android中DownloadManager实现文件下载实例详解

Android中DownloadManager实现文件下载 下载 创建下载链接 DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 设置允许下载的网络环境 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); WIFI网络 : DownloadManager.Request.NETWORK_WIFI 移动网络 : DownloadManager.Request.NETWORK_MOBILE No

使用Android自带的DownloadManager下载ApK并安装

使用Android自带的DownloadManager下载ApK并安装

lady_zhou的博客 5439

深入分析RAG知识库多模态数据预处理

多模态企业数据预处理是构建高质量RAG知识库的关键环节。本文详解了处理流程:1)文档格式识别与路由;2)多模态内容提取(文本、图像、音视频);3)结构解析与语义重建;4)数据清洗与增强;5)智能分块(强调语义完整性);6)元数据注入。推荐使用开源工具如PaddleOCR、Whisper、BLIP-2等,或商业API处理复杂场景,最终生成带丰富元数据的结构化内容,为后续向量化检索奠定基础。

qq_35354529的博客 1379

android开发实现后台下载功能,Android开发中利用DownloadManager实现下载功能(视频,音频等)...

,Integer,String> {privateTextView tvTitle;privateProgressBar pbarDownLoad;privateContext mContext;private staticString HOST_PC_IP= "cdn.llscdn.com";private longcurrentDownloadID;private booleanidDo...

weixin_42545292的博客 1449

【SEED Labs 2.0】V*N Tunneling Lab

本文为 SEED Labs 2.0 - V*N Tunneling Lab 的实验记录。本实验工作量较大,但难度不大,重点在于搞清是谁发给谁,走的什么路径。另外,本次实验由于网络中的设备较多,修改了环境变量方便分清哪个窗口是哪个设备。这样操作起来就方便多了。...

Chenyang的博客 6979

Petalinux实战:3种方法调试AXI UART Lite设备(含minicom/screen/直接寄存器操作对比)

本文详细介绍了在Zynq平台上使用Petalinux调试AXI UART Lite设备的三种实用方法:用户空间工具(minicom/screen)、应用层程序(termios配置)和底层寄存器直接操作。文章对比了各方法的优缺点与适用场景,并重点解析了设备树配置、驱动加载等关键环节,帮助开发者快速定位并解决串口通信中的常见问题。

weixin_29190169的博客 432

Android下载管理器DownloadManager

Android 从 2.3 (API9) 开始提供了专门的下载工具DownloadManager(下载管理器)统一管理下载操作。 下载管理器DownloadManager的对象从系统服务DOWNLOAD_SERVICE中获取,具体使用过程分为3步:构建下载请求(Request)、进行下载操作(DownloadManager)和查询下载进度(Query)。

m0_57150356的博客 6928

高通SA8295P音频接口深度解析:全面掌握SA8295P的LS-I2S、PCM/TDM与高性能音频处理技术设计

SA8295P提供丰富的音频接口选项,包括LS-I2S、PCM/TDM和HS-I2S接口,具备灵活的配置选项,适合各种高保真音频和高速数据传输应用。结合LS-I2S和PCM/TDM接口:在复杂的音频编解码器设计中,可结合使用LS-I2S和PCM/TDM接口,以处理和传输不同的音频数据流。使用HS-I2S接口:在软件定义无线电(SDR)系统中,高速I2S接口可处理高速数据流,如无线电信号的解码和处理。LS-I2S(低速I2S)接口是SA8295P的一部分,提供了丰富的音频数据传输选项。

weixin_43199439的博客 1407

android编程 下载文件,Android开发(22)使用DownloadManager下载文件

概述使用DownloadManager 是个很好用的下载方式。它会出现在任务栏,指示当前的下载位置。它使用广播来接收完成消息,点击任务事件的交互。实现步骤1.添加权限2.在页面里初始化DownloadManager downloadManager;// 过SystemService 以获取 DownloadManagerdownloadManager = (DownloadManager) get...

weixin_42488542的博客 518

《QGIS快速入门与应用基础》009:国内镜像源(清华大学/阿里云)下载技巧

针对国内用户下载QGIS速度慢、易中断的问题,推荐使用清华大学和阿里云两大国内镜像源,提供3-10MB/s的极速下载方案。详细解析镜像源核心优势、分步骤下载指南及校验方法,对比清华(同步快、北方优选)与阿里云(南方节点多)的特点。针对常见问题如版本延迟、404错误等提供解决方案,并介绍搭配IDM等工具实现多线程加速的进阶技巧。通过镜像源+下载工具组合,用户可高效获取QGIS安装包,为后续系统安装奠定基础。

LuckyHanMo的博客 1738

CANoe/CAPL ,远程邮件通知

CANoe/CAPL ,远程邮件通知

蚂蚁小兵 3036

使用Android自带DownloadManager下载文件

SDK在API Level 9中加入了DownloadManager服务,可以将长时间的下载任务交给系统,完全由系统管理。 直接看实例代码: package com.hebaijun.downloadtest; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import a

小何才露尖尖角 4万+

华为OD机试2025A卷 - BOSS的收入(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - BOSS的收入(Jav一个XX产品行销总公司,只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销。规定,每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级。现给出一组分销的关系,和每个分销的收入,请找出boss并计算出这个boss的收入。输入:分销关系和收入:[[分销id 上级分销id 收入], [分销id 上级分销id 收入], [分销id 上级分销id 收入]]输出:[boss的ID, 总收入]

算法大师! 1172

使用Android自带的DownloadManager下载文件

简介 基础用法 完整代码 先放Google官方文档:https://developer.android.google.cn/reference/android/app/DownloadManager 简介 使用Context.getSystemService(Context.DOWNLOAD_SERVICE)来获取DownloadManager的实例 Download...

LittleFogCat的专栏 我的个人网站:https://xiaoniu.tech 4354

STM32 stack_size和heap_size大小设置的意义

在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。 1、若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。 2、当工程中使用了malloc动态分配内存空间时,这时分配.......

zxm8513优快云博客 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android使用DownloadManager实现文件下载

Android使用DownloadManager实现文件下载Android使用DownloadManager实现文件下载 下载 创建下载链接 设置允许下载的网络环境 Notification显示下载进度 设置保存路径 下载 取消下载 下载完成的监听 Code 下载 广播接收者 注册 实现 下载创建下载链接DownloadManager.Request request = new DownloadMa

kongqw 1957

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 调用下载,使用Android系统提供的DownloadManager来下载文件

在android2.3以后android系统提供了一个系统组件来供其他app调用来下载东西,使用起来非常方便。例如我们可以拿来下载app的新版本apk,同时在同时注册一个广播接收器来接收下载完成时DownloadManager发出的的广播,然后自动安装程序。SDK在API Level 9中加入了DownloadManager服务,可以将长时间的下载任务交给系统,完全由系统管理。直接看实例代码:pa...

weixin_42511024的博客 918

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android Kotlin WebView使用DownloadManager下载文件

Android系统内置提供作为服务的下载管理器DownloadManager,可以很方便下载文件。WebView下载文件可通过该系统服务实现,主要包含两种方式: 1)手动下载; 2)通过DownloadListner触发下载事件。 这里指的是第二种方式。这种触发下载事件的条件是webkit内核WebView浏览的网络地址URL指向的是一个非在线打开展示内容文件。.........

Nnnn的博客 1394

Android 使用系统下载管理器DownloadManager下载文件

使用系统下载管理器,主要有两个类:DownloadManager, DownloadManager.Request 1.建立一个下载    声明一个DownloadManager对象 private DownloadManager mDownloadManager; mDownloadManager = (DownloadManager) mApplicationContext

qqwuy_muzi的博客 7772

android开发(23)使用DownloadManager下载文件

使用DownloadManager 是个很好用的下载方式。它会出现在任务栏,指示当前的下载位置。它使用广播来接收完成消息,点击任务事件的交互。 让我们看看如何使用 1.添加权限 2.在页面里初始化 1 DownloadManager downloadManager; 2 3 // 过SystemService 以获取 DownloadManager 4

萌萌的It人 www.itmmd.com 6791

[BugFix] [Android] DownloadManager使用流程问题导致的 下载下来的文件找不到

DownloadManager使用流程错误导致的无法找到下载完成的文件1. 问题描述2. 问题解决3. 解决后的思考5. 场景利用 1. 问题描述 先提交 enqueue 请求,后配置 DownloadManager.Request(parseUri).also { // wrong position refId = downloadManagerService.enqueue(it) it.apply { setAll

Hpbbs 2333

Android开发(22)使用DownloadManager下载文件

概述 使用DownloadManager 是个很好用的下载方式。它会出现在任务栏,指示当前的下载位置。它使用广播来接收完成消息,点击任务事件的交互。 实现步骤 1.添加权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:...

张云飞Vir的专栏 293
上一篇: 安卓获取设备蓝牙信息和连接状态
下一篇: Android app和aar混淆方法
Jason_Flash
博客等级 码龄7年 1万+粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值