reference to : http://blog.csdn.net/u012858313/article/details/38821857

项目中遇到一个问题,就是用到DownloadManager的时候先判断一下,如果有自己定义的用自己的,没有的话用系统的,DownloadManager代码其实写在了工程中,所以一开始不太明白,后来想了想,原来指的是downloadmanager里面的数据库DownloadProvider, 因为DownloadProvider不在我工程的清单文件中,而是在公司的手机中已经早定义好了,而系统的DownloadManager中的DownloadProvider更不是我控制的,

1,知道自己定义的Downloads.Impl.CONTENT_URI;

private void chooseDownloads() {Cursor cursor=mContext.getContentResolver().query(uri, null, null, null, null);if (cursor == null) {isSystemDownload = true;systeManager = (android.app.DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);} else {isSystemDownload = false;nonSystemManager = DownloadManager.getInstance(mContext);}
}

2.DownloadManager的暂停,

2.DownloadManager的暂停,Uri uri=ContentUris.withAppendedId(android.provider.Downloads.Impl.CONTENT_URI, downloadId);
ContentValues values = new ContentValues();
values.put(android.provider.Downloads.COLUMN_CONTROL, android.provider.Downloads.Impl.CONTROL_PAUSED);
values.put(android.provider.Downloads.Impl.COLUMN_STATUS, android.provider.Downloads.Impl.STATUS_PAUSED_BY_APP);
mContext.getContentResolver().update(uri, values, null, null);

3.DownloadManager继续(必须改变downloadmanager源码,因为系统的downloadmanager不会理会你对Android/android-downloadmanager-pro/

Uri uri=ContentUris.withAppendedId(android.provider.Downloads.Impl.CONTENT_URI,downloadId);
ContentValues values = new ContentValues();
if (pausedForWifi) {values.put(android.provider.Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES, android.app.DownloadManager.Request.NETWORK_WIFI| android.app.DownloadManager.Request.NETWORK_MOBILE);
}
values.put(android.provider.Downloads.Impl.COLUMN_CONTROL,android.provider.Downloads.Impl.CONTROL_RUN);
values.put(android.provider.Downloads.Impl.COLUMN_STATUS, android.provider.Downloads.Impl.STATUS_RUNNING);
mContext.getContentResolver().update(uri, values, null, null);

4.重新开始:

systeManager.restartDownload(downloadId);
Uri uri=ContentUris.withAppendedId(android.provider.Downloads.Impl.CONTENT_URI, downloadId);
ContentValues values = new ContentValues();
values.put(android.provider.Downloads.Impl.COLUMN_CONTROL, android.provider.Downloads.Impl.CONTROL_RUN);
mContext.getContentResolver().update(uri, values, null, null);

5.判断是否为手动控制pause或run

Uri uri=ContentUris.withAppendedId(android.provider.Downloads.Impl.CONTENT_URI, downloadId);
Cursor cursor = mContext.getContentResolver().query(uri, null, null,null, null);
while (cursor.moveToNext()) {int control=cursor.getInt(cursor.getColumnIndex(android.provider.Downloads.Impl.COLUMN_CONTROL));if (android.provider.Downloads.Impl.CONTROL_RUN!=control&&android.provider.Downloads.Impl.CONTROL_PAUSED != control) {return true;}
} return false;

分类: Android Pro
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/6072262.html如需转载请自行联系原作者
demoblog

[Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续...相关推荐

  1. Android中的URI

    就Android平台而言,URI主要分三个部分:scheme, authority and path.其中authority又分为host和port.格式如下: scheme://host:port/ ...

  2. android 根据文件Uri获取图片url

    今天,简单讲讲android里如何通过文件的Uri获取文件的路径url. 昨天,我讲了如何调用手机的文件管理器获取文件资源,但是文件管理器返回的是文件的Uri,我们需要通过Uri获取文件的url才可以 ...

  3. [Android Pro] proguard.cfg 配置文件

    转载自: http://my.oschina.net/zhangzhihao/blog/72393 # ------------------------------------- # android ...

  4. Android中的URI 和Uri

    一.URI与Uri 大家可能经常会看到在开发时,怎么有的时候是URI,有的时候是Uri,这是怎么回事? 名称如此相像的两个类是有什么区别和联系? 1.所属的包不同.URI位置在java.net.URI ...

  5. [Android Pro] Android保存图片到系统图库

    http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/ http://blog.csdn.net/x ...

  6. [Android Pro] 有关Broadcast作为内部类时注册的一些问题

    很经常Broadcast都会写成一个Activity或者Service的内部类.这时候的注册和普通有点小区别. 有两种情况 1.假如是再Manifest文件里面静态注册的话,需要注意. ex: < ...

  7. [Android Pro] 精确记录和恢复ListView滑动位置

    reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...

  8. [Android Pro] ScrollView使用fillViewport设置高度为MatchParent

    reference to : http://blog.csdn.net/u012975705/article/details/49275001 之前遇到一问题,就是当使用ScrollView时,Scr ...

  9. android中怎么网络判断,Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...

最新文章

  1. Open***2.4.3 基于用户名密码验证方式(实战)
  2. 【转】卡尔曼滤波算法详细推导(相当值得一看)
  3. Hadoop实践之Python(一)
  4. 企业级监控软件Zabbix搭建部署之使用mutt+msmtp配置Zabbix邮件报警
  5. CCRD_TOC_2008年第6期
  6. Linux防火墙配置—访问外网WEB
  7. figma设计_一种在Figma中跟踪设计迭代的简单方法
  8. 子集和数问题——回溯法(C++)
  9. 轻松云上揽胜中华,靠的就是这份聪明的“地图”!
  10. Vue引入Froala-Editor富文本编辑器
  11. steam怎么设置邮箱令牌_【教程】电脑端steam动态令牌设置教程
  12. 概率导论-马尔可夫相关
  13. Android ViewPager 自定义翻页动画
  14. 罗马数字相加java_LeetCode题库 13罗马数字转整数(java)
  15. 远程桌面之客户端连接(MAC远程Windows桌面)
  16. 超详细的java基础知识学习(java SE、javaEE)笔记 核心重点!
  17. 合天网安实验室CTF-解密100-Funny Crypto
  18. GIT fatal: unable to auto-detect email address (got 'Administrator@DESKTOP-880G72L.(none)')
  19. 跨境电商政策利好,商家如何破局“三封”难题
  20. 静态链接与动态链接原理

热门文章

  1. 山海镜花vivo服务器微信号,山海镜花初始号怎么刷
  2. bluecam连接步骤说明_迈拓维距Type-C扩展坞手机连接电视图文教程
  3. Linux系统性能检测
  4. 如何CLASSPATH下的resource.properties文件进行读写操作?
  5. centos7下yum安装mysql
  6. Docker、Mesos和Marathon剖析以及入门实战
  7. 10-angular.identity
  8. 看小白如何解决ajax跨域问题
  9. Lua基础(字符处理)
  10. 通过DMVS采集并存储SQL Server性能计数器数据