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

Notification显示下载进度

// 在Notification显示下载进度

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);

// 设置Title

request.setTitle("更新");

// 设置描述

request.setDescription("正在下载更新文件...");

设置保存路径

private static final String DIR = "AutoUpdate";

private static final String APK = "MyHome.apk";

private static final String PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DIR + "/" + APK;

request.setDestinationInExternalPublicDir(DIR,APK);

下载

下载会返回一个进程ID

DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);

long id = downloadManager.enqueue(request);

取消下载

通过ID可以需要下载

downloadManager.remove(id);

下载完成的监听

下载完成,系统会发出广播,通过注册广播监听者可以监听到下载完成

广播的Action为DownloadManager.ACTION_DOWNLOAD_COMPLETE

/**

* Broadcast intent action sent by the download manager when the user clicks on a running

* download,either from a system notification or from the downloads UI.

*/

@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)

public final static String ACTION_NOTIFICATION_CLICKED =

"android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";

Code

下载

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

// WIFI状态下下载

request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);

// 设置通知栏

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);

request.setTitle("更新");

request.setDescription("正在下载更新文件...");

// 存放路径

request.setDestinationInExternalPublicDir(DIR,APK);

// 开始下载

DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);

long id = downloadManager.enqueue(request);

广播接收者

package="com.example.kongqingwei.downloadmanagerdemo">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

实现

package com.example.kongqingwei.downloadmanagerdemo;

import android.app.DownloadManager;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

/**

* Created by kongqingwei on 2016/12/19.

* 广播接收者

*/

public class AutoUpdateBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context,Intent intent) {

if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())) {

Toast.makeText(context,"下载完成",Toast.LENGTH_SHORT).show();

boolean isInstalled = AutoUpdater.installApk();

Toast.makeText(context,isInstalled ? "安装成功" : "安装失败",Toast.LENGTH_SHORT).show();

}

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android文件下载功能实现,Android中DownloadManager实现文件下载实例详解相关推荐

  1. android mvp模式例子_Android中mvp模式使用实例详解

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

  2. android 中的悬浮按钮,Android 中FloatingActionButton(悬浮按钮)实例详解

    android 中floatingactionbutton(悬浮按钮)实例详解 一.介绍 这个类是继承自imageview的,所以对于这个控件我们可以使用imageview的所有属性 二.使用准备, ...

  3. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  4. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

  5. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  6. ios 扇形 按钮_IOS 开发中画扇形图实例详解

    IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了. 首先我们需要 ...

  7. WORD中的自动编号实例详解(多图)

    跟"项目符号"一样,自动编号功能也是针对"列表"内容的.并且自动编号中更改列表级别.设置字体等方法与项目符号的相同,参见:WORD中的项目符号实例详解 与&qu ...

  8. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

  9. python编程字典100例_python中字典(Dictionary)用法实例详解

    本文实例讲述了python中字典(Dictionary)用法.分享给大家供大家参考.具体分析如下: 字典(Dictionary)是一种映射结构的数据类型,由无序的"键-值对"组成. ...

  10. php 递归中的全局变量,PHP中递归的实现实例详解

    递归的定义 递归(http:/en.wikipedia.org/wiki/Recursive)是一种函数调用自身(直接或间接)的一种机制,这种强大的思想可以把某些复杂的概念变得极为简单.在计算机科学之 ...

最新文章

  1. 关于软件开发的随想,纯属意淫
  2. linux禁止防火墙命令,LINUX关闭打开防火墙命令
  3. gps天线拆解图片_飞宇稳定器拆解:握杆的手,不怕颤抖
  4. 部署ftp文件共享服务
  5. 数字电路与系统-知识点2
  6. python xlwt模块下载_python 的xlwt模块
  7. Android Modem修改点以及修改方法
  8. 用友U8+V13.0安装步骤
  9. IE无法打开网页的解决方法
  10. C++运算符重载(简单易懂)
  11. [TYVJ]选课lzl初一
  12. fatal error C1189
  13. 企业落地级jmeter性能测试,结果分析以及报告(4-3)
  14. 【MFC】打砖块小游戏(下)(7)
  15. java毕业设计奥利给共享自习室系统(附源码、数据库)
  16. java compiler类_Java_Java Compiler 应用实例
  17. javascript 原生
  18. 阿里云/华为云云盘挂载步骤
  19. 数字电路-【百科总结】
  20. 在 2020,什么工具能取代 Evernote 印象笔记?

热门文章

  1. AS-GCN【复现】ModuleNotFoundError: No module named ‘processor.demo‘问题
  2. 住进布达拉宫,我是雪域最大的王。流浪在拉萨街头,我是世间最美的情郎。...
  3. linux时间同步命令centos6,CentOS6.5搭建NTP服务器,并为思科交换机提供时间同步
  4. 角度,弧度,三角函数
  5. 前端性能优化 - chrome performance看浏览器渲染过程
  6. 小明Q2投影仪好用吗?小明Q2和哈趣K1哪个更值得入手?
  7. 转生活中的各种食品安全问题
  8. JavaWeb-学生宿舍管理系统
  9. 观察者模式(结合C#,Unity)
  10. Python3,自动识别图片文字,这个库,我爱了。