android文件下载功能实现,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
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实现文件下载实例详解相关推荐
- android mvp模式例子_Android中mvp模式使用实例详解
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
- android 中的悬浮按钮,Android 中FloatingActionButton(悬浮按钮)实例详解
android 中floatingactionbutton(悬浮按钮)实例详解 一.介绍 这个类是继承自imageview的,所以对于这个控件我们可以使用imageview的所有属性 二.使用准备, ...
- android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...
Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...
- android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解
1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...
- c语言二级指针有什么作用,C语言中二级指针的实例详解
C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...
- ios 扇形 按钮_IOS 开发中画扇形图实例详解
IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了. 首先我们需要 ...
- WORD中的自动编号实例详解(多图)
跟"项目符号"一样,自动编号功能也是针对"列表"内容的.并且自动编号中更改列表级别.设置字体等方法与项目符号的相同,参见:WORD中的项目符号实例详解 与&qu ...
- java 静态 编译_Java中的动态和静态编译实例详解
Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...
- python编程字典100例_python中字典(Dictionary)用法实例详解
本文实例讲述了python中字典(Dictionary)用法.分享给大家供大家参考.具体分析如下: 字典(Dictionary)是一种映射结构的数据类型,由无序的"键-值对"组成. ...
- php 递归中的全局变量,PHP中递归的实现实例详解
递归的定义 递归(http:/en.wikipedia.org/wiki/Recursive)是一种函数调用自身(直接或间接)的一种机制,这种强大的思想可以把某些复杂的概念变得极为简单.在计算机科学之 ...
最新文章
- 关于软件开发的随想,纯属意淫
- linux禁止防火墙命令,LINUX关闭打开防火墙命令
- gps天线拆解图片_飞宇稳定器拆解:握杆的手,不怕颤抖
- 部署ftp文件共享服务
- 数字电路与系统-知识点2
- python xlwt模块下载_python 的xlwt模块
- Android Modem修改点以及修改方法
- 用友U8+V13.0安装步骤
- IE无法打开网页的解决方法
- C++运算符重载(简单易懂)
- [TYVJ]选课lzl初一
- fatal error C1189
- 企业落地级jmeter性能测试,结果分析以及报告(4-3)
- 【MFC】打砖块小游戏(下)(7)
- java毕业设计奥利给共享自习室系统(附源码、数据库)
- java compiler类_Java_Java Compiler 应用实例
- javascript 原生
- 阿里云/华为云云盘挂载步骤
- 数字电路-【百科总结】
- 在 2020,什么工具能取代 Evernote 印象笔记?
热门文章
- AS-GCN【复现】ModuleNotFoundError: No module named ‘processor.demo‘问题
- 住进布达拉宫,我是雪域最大的王。流浪在拉萨街头,我是世间最美的情郎。...
- linux时间同步命令centos6,CentOS6.5搭建NTP服务器,并为思科交换机提供时间同步
- 角度,弧度,三角函数
- 前端性能优化 - chrome performance看浏览器渲染过程
- 小明Q2投影仪好用吗?小明Q2和哈趣K1哪个更值得入手?
- 转生活中的各种食品安全问题
- JavaWeb-学生宿舍管理系统
- 观察者模式(结合C#,Unity)
- Python3,自动识别图片文字,这个库,我爱了。