首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发笔记(六十一)文件下载管理DownloadManager

下载请求 要想使用下载功能,首先得构建一个下载请求,说明从哪里下载下载参数为何、下载文件保存到哪里等等。...Request.setDestinationInExternalFilesDir : 设置下载文件本地的保存路径。...查询下载进度 虽然下载进度可在通知栏查看,但是有时APP自身也想了解当前的下载进度,那就要调用DownloadManager的query方法。...2、下载进行时的通知栏点击事件:在下载过程,用户点击通知栏下载任务,系统便发出action为DownloadManager.ACTION_NOTIFICATION_CLICKED(android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED...后来实际开发测试发现,DownloadManager其实比较智能,当网络一直是允许类型时,任务会一直下载;当网络断开或者不在允许范围内时,任务会自动暂停下载;只要网络连上或者切换到允许范围内,那么任务会自动恢复下载

5K41
您找到你想要的搜索结果了吗?
是的
没有找到

Android7.0版本影响开发的改进分析

此权限策略的更改有多重副作用: 私有文件文件权限不应再由所有者放宽,为使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE而进行的此类尝试将触发SecurityException...分享私有文件内容的推荐方法是使用FileProvider。 DownloadManager不再按文件名分享私人存储的文件。...通过使用DownloadManager.Request.setDestinationInExternalFilesDir())或DownloadManager.Request.setDestinationInExternalPublicDir...())将下载位置设置为公共位置的老App仍可以访问COLUMN_LOCAL_FILENAME的路径,但是Google还是强烈反对使用这种方法。...保存这些元数据便于你Config变更后决定是否需要刷新缓存数据。 ③ 避免用像素单位指定尺寸,因为像素不会随屏幕密度缩放。应改为使用dp等单位。

85010

Flutter 下载器 | flutter_download_manager源码解析

前言 内容类应用图片或文件下载,一般应用应用更新和升级,这些都是经典的下载场景。下载是项目中基础且重要的模块。...部分下载功能 队列下载 暂停、取消或恢复下载 并行文件下载(2 个或可以更改) 支持批量下载 支持平台: Linux | MacOS | Windows | Android | iOS 使用方法 简单下载一个文件...(这样的设计是不是看起来更 Dart) 任务请求抽象:DownloadRequest 重点说下 cancelToken,该字段暂停,取消,恢复下载任务实现起了关键作用。...任务管理表,里面的事情一般不会去记,脑子里面。软件开发,PM 该表格维护者。 完成某任务一般流程如下: 生成一个任务请求表达意愿。 查询任务管理表任务状态并决定是否有资格真正添加到请求列表。...下载过程如果之前暂停未下载完毕的文件,通过设置 header range:bytes 来实现断点续传,将后续请求到文件存放到.temp,然后追加到原未下载完成文件后。(下述第 29 行)。

1K20

详解Android10的分区存储机制(Scoped Storage)适配教程

分区存储将影响Android10系统首次安装启动、且targetSdkVersion =29的应用。需要访问和共享外部存储文件的应用会受到影响,需要进行兼容性适配。...影响范围: Android 10运行的应用: 1.targetSdkVersion <= 28,不受影响 2.如果targetSdkVersion = 29,默认情况应用外部存储可见性将被过滤...应用想要获取当前应用的专有存储目录路径是可以用Context.getExternalFilesDir()的方式获取。...共享媒体集合存储 共享媒体集合存储中保存媒体文件时,需要根据文件的类型选择MediaStore。...// 把图片下载到共有媒体集合并在相册显示 // 创建ContentValues, 并加入信息 val values = ContentValues() values.put(MediaStore.Images.Media.DESCRIPTION

3.2K32

基于DownloadManager的简单下载器编写小结

一直听说过Android自带的DownloadManager,只是拖延症发作,一直没有时间去研究研究,其实在很多项目开发,都有一个功能是非常重要的,那就是应用的检查更新了!...| DownloadManager.Request.NETWORK_WIFI); //通知栏设置 //显示通知栏 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE...= new int[]{ -1, -1, 0 }; //通过构建下载请求时获得的downloadId进行文件查询 DownloadManager.Query query...} } } }; //注册,这里只能拦截文件下载成功的广播,并不能进行进度监听,适当的地方取消订阅广播 context.registerReceiver.../** * 由于DownloadManager自身没有提供实时进度的api,所以通过以下定时器获取已下载文件大小 */ private void updateProgress() {

87910

【r_upgrade】快来升级你的Flutter应用

image 介绍 移动开发过程,应用升级是必不可少的一个环节,所以,r_upgrade应用升级插件就出现了,这里先鼓掌欢迎??...Android热更新 开始吧 1.使用插件: pubspec.yaml文件添加下面代码 dependencies: r_upgrade: last version 2.使用打开链接的方式进行更新...: true: 调用系统的DownloadManager进行下载 优势:接入简单,无需担心操作,下载全由系统管理 劣势:无法使用http方式进行下载,无法在下载过程中点击通知栏进行暂停,无法根据有无网络进行暂停和继续下载...热更新 (使用 DownloadManager) 你可以使用升级返回的id进行热更新,下载文件需要将新版本生成的isolate_snapshot_data、kernel_blob.bin、vm_snapshot_data...'))); } - 重启应用即可 注意,Android应用,请确保AndroidManifest.xml声明以下权限,并在6.0系统上进行动态授权,不然会调用升级方法将抛出权限异常

1.5K50

Block 详解

操作 开始研究Block的copy操作之前,先来思考一下:Block是存储还是堆上呢?...栈块存在于栈内存, 超出其作用域则马上被销毁 堆块存在于堆内存, 是一个带引用计数的对象, 需要自行管理其内存 简而言之,存储的Block就是栈块、存储的就是堆块、既不在栈也不在堆的块就是全局块...栈的Block,如果其所属的变量作用域结束,该Block就被废弃,如同一般的自动变量。当然,Block的__block变量也同时被废弃。如下图: 图片上传中......(image-16f5c5-1566284363726-0) 通过forwarding, 无论是block还是 block外访问block变量, 也不管该变量或堆上, 都能顺利地访问同一个__.../AFNetworking/AFNetworking/zip/master" //下载DownloadManager * downloadManager = [[DownloadManager

1K50

Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改

《Android Studio开发实战 从零基础到App上线(第2版)》书后面的附录给出了Android8和Android9的主要特性说明,附录表格如下图所示: 不过附录表格只涵盖了常见的功能代码适配...此时要在network模块的res目录下面创建xml目录,并在xml目录下新建文件network_security_config.xml,文件内容如下所示: <?...1、Android10默认开启沙箱模式,即使已经动态申请了存储卡读写权限,在外部存储读写文件仍然失败。...此时要在代码添加版本号判断,如果当前系统版本大于等于29,就不再开关WiFi,代码例子如下: if (Build.VERSION.SDK_INT >= 29) { // Android10...Android10及以下版本,该值默认为true,但从Android11开始该值默认为false。 设置代码示例如下: // 设置是否允许访问文件,如WebView访问存储卡的文件

99320

Android开发工具类之DownloadManagerPro

DownloadManager.Request用来请求一个下载DownloadManager.Query用来查询下载信息。...1、int[] getBytesAndStatus(long downloadId) 这个方法就是传入我们上面所说的那个enqueue接口返回的下载id,可以获取到这个下载文件已经下载了多大,总共多大,...2、int[] getDownloadBytes(long downloadId) 这个方法就是传入下载id,可以获取到已经下载了多大,总共这个下载文件有多大的信息,返回信息也是一个int数组。...3、int getErrorCode(long downloadId) 这个方法是传入下载id,得到的返回信息就是这个文件下载失败的错误代码,error code。...() 这个方法就是判断DownloadManager是否存在停止下载的和重新下载的方法 10、int pauseDownload(long... ids) 这个方法就是传入多参数的id,停止响应下载

66390

Android多线程下载示例详解

一、概述 说到Android文件下载,Android API明确要求将耗时的操作放到一个子线程执行,文件下载无疑是需要耗费时间的,所以要将文件下载放到子线程执行。...二、服务端准备 在这个小例子我以下载有道词典为例,在网上下载有道词典的安装包,eclipse中新建项目web,将下载的有道词典安装包放置WebContent目录下,并将项目发布到Tomcat...id private int threadId; //下载文件路径 private String path; //保存文件 private File file; //下载的进度条更新的监听器...类 这个类主要是对下载过程的管理,包括下载设置下载文件保存的位置,计算多线程每个线程的数据下载量等等。...事件,onClick事件开启一个线程进行下载操作,同时子线程获取到的数据,通过handler与Message机制传递到主线程,更新界面显示。

1.2K10

DownloadManager实现文件下载功能

文件下载有许多方式,比如什么多线程下载,单线程下载等等,我刚开始接触文件下载的时候是看了一个《关于文件多线程下载原理》的一个视频,里面讲了什么是多线程下载,然后就是自己写一个下载类,实现文件下载,虽然最后也是能够实现下载...接触DownloadManager是因为我前一段时间写自己的一个音乐播放器,需要从网络获取歌曲并下载,这个时候我就想找一个简单是用的下载方式然后就认识了它,关于它的使用我还没做具体的深究,只是把它用在了自己的应用里面...setNotificationVisibility方法就需要好好说说了,它的参数有四种情况: Request.VISIBILITY_VISIBLE:在下载进行的过程,通知栏中会一直显示该下载的Notification...Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED:在下载过程通知栏会一直显示该下载的Notification,在下载完成后该Notification会继续显示,直到用户点击该...,接收到之后我们就直接打开文件代码,我设置的是打开apk文件,即设置文件类型为”application/vnd.android.package-archive“,其中mDownloadID就是我们得到的那个下载

1.2K10
领券