其实,这块内容网上有很多,但我还是提倡用android 自带的DownloadManager,我们先来了解下DownloadManager的用法。

1.获取DownloadManager:

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

2.声明一个请求类

 //获取一个下载请求    DownloadManager.Request request = new DownloadManager.Request()    //设置wifi,流量都可以下载    request.setAllowedNetworkTypes();    //漫游网络是否可以下载    request.setAllowedOverRoaming();    //在通知栏中显示标题,默认就是显示的    request.setTitle();    //设置隐藏通知栏下载    request.setNotificationVisibility();    //设置下载路径    request.setDestinationInExternalPublicDir();

3.将请求加入请求队列,开始下载

    //加入下载队列后会给该任务返回一个long型的id,    //通过该id可以取消任务,重启任务等等    mTaskId = downloadManager.enqueue(request);

4.移除这个下载任务请求(这个很重要,不然你下载完后,取消安装,再次下载时,你获取的当前下载进度就会出错。所以,你在第一次下载完后,一定要调如下函数

downloadManager.remove(mTaskId)

5.获取下载任务信息

DownManager会对所有的现在任务进行保存管理,这时候就要用到DownManager.Query对象,通过此对象,我们可以查询所有下载任务信息。

setFilterById(long… ids):根据任务编号查询下载任务信息

setFilterByStatus(int flags):根据下载状态查询下载任务

DownloadManager.Query query = new DownloadManager.Query();    query.setFilterByStatus(status);    Cursor cursor= downManager.query(query);

6.获取当前下载的字节数,总共字节数。

long curBytes = cursor  .getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLU                MN_BYTES_DOWNLOADED_SO_FAR));  long totalBytes = cursor .getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));  float mProgress = ((float) (curBytes * 100) / totalBytes);

7.android 6.0兼容,这个自己写个权限判断就行了。

8.android 7.0的兼容

                

@xml/filepaths :这个文件是在layout下,创建一个xml文件夹,在创建一个filepaths.xml 文件,filepaths.xml 内容如下:

<?xml version="1.0" encoding="utf-8"?>    

最后当然是Demo链接地址下载:
http://download.csdn.net/detail/jimtrency/9866203

更多相关文章

  1. Android(安卓)更新升级下载 自定义Updates 兼容版
  2. android使用SmartRefreshLayout库实现下拉刷新和上拉加载
  3. Android(安卓)SDK Download List
  4. 通过gae访问android官方文档
  5. Gradle(三)构建任务
  6. Windows下git下载android source
  7. Android(安卓)Studio的Gradle错误解决方法
  8. 在Android中实现文件读写
  9. Android(安卓)Native Browser下载存储路径选择

随机推荐

  1. Android之Shared Preferences
  2. Android(安卓)day_11 (四种对话框)
  3. 2.Retrofit上传list数组给后端
  4. Android(安卓)布局
  5. android handler正确写法
  6. Android实现手写板和涂鸦功能
  7. Android(安卓)studio引用包冲突
  8. Android(安卓)获得sdcard大小与内存大小
  9. android之WebView的使用
  10. android 类似微信的摇一摇实现