[Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续
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] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续的更多相关文章
- [Android Pro] 监听内容提供者ContentProvider的数据变化
转载自:http://blog.csdn.net/woshixuye/article/details/8281385 一.提出需求 有A,B,C三个应用,B中的数据需要被共享,所以B中定义了内容提供者 ...
- Android基础总结(十)ContentProvider
内容提供者(掌握) 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的私有数据 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数 ...
- Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)
1. Android的四大组件: (1)Activity 用户交互的UI界面 (2)Service 后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...
- Android应用开发学习笔记之ContentProvider
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz ContentProvider用于为其它应用程序提供共享数据,它为不同应用程序间共享数据提供了统一的操作接口. 一. ...
- Android系统常用URI
android系统常用URI android系统管理联系人的URI如下: ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri ContactsContrac ...
- Android(java)学习笔记189:ContentProvider使用(银行数据库创建和增删改查的案例)
1. Android的四大组件: (1)Activity 用户交互的UI界面 (2)Service 后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...
- Android 如何判断一个应用在运行(转)
Android 如何判断一个应用在运行 在一个应用中,或一个Service .Receiver中判断一个应用是否正在运行,以便进行一些相关的处理. 这个时候我们需要得到一个ActivityManag ...
- Android判断Touch为滑动事件还是操作控件
Android判断Touch为滑动事件还是操作控件 因为在项目中要判断WebView是否处于滚动状态,但它不像ListView有onScrollStateChanged方法来监听,要实现就得手动监听它 ...
- Android版本判断
尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的.向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK.可以在高版本的SD ...
随机推荐
- 【Chrome】新建Chrome插件,新建,事件行为,本地存储
源:walkingq 1,新建:静态网站+manifest.json:[注:mainifest_version是chrome 18以后新增key] manifest.json 截图 2,事件行为: 3 ...
- MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)
MyISAM类型的表强调的是性能,但是不支持事务.及外部键等高级功能. MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的 ...
- Sigmaplot 13 破解版什么地方可以下载
SigmaPlot是一款专业的科学绘图软件,可用于绘制准确.高质量的图形和曲线,支持一百多种2D.3D科学图形,同时拥有强大的数据统计分析功能.现在网络不断发展,软件使用日益频繁,今天小编就和大家分享 ...
- [Think In Java]基础拾遗2 - 多态、反射、异常、字符串
目录 第八章 多态第十四章 类型信息第十二章 通过异常处理错误第十三章 字符串 第八章 多态 1. 前期绑定 & 后期绑定 绑定是指将方法调用同一个方法主体关联起来的这么一个过程.如果在程序执 ...
- TypeScript Generics(泛型)
软件工程的一个主要部分就是构建组件,构建的组件不仅需要具有明确的定义和统一的接口,同时也需要组件可复用.支持现有的数据类型和将来添加的数据类型的组件为大型软件系统的开发过程提供很好的灵活性. 在C#和 ...
- 静态关键字static(2)
static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static ...
- 不从SD卡启动树莓派2
本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...
- 10月25日上午PHP继承多态
概念:子类可以继承父类的一切 方法重写:在子类里面对父类的方法进行重写,实现自己独特的功能.特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类.override重写(子类对父类的重写) ...
- 高斯混合模型(GMM)
复习: 1.概率密度函数,密度函数,概率分布函数和累计分布函数 概率密度函数一般以大写“PDF”(Probability Density Function),也称概率分布函数,有的时候又简称概率分布函 ...
- CentOS个人目录下中文路径转英文路径
CentOS个人目录下中文路径转英文路径 如果安装了中文版到CentOS之后,root目录及home目录下会出现中文到路径名,如"桌面"."文档"," ...