[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 ...
随机推荐
- 【CSS】css自定义字体
源:http://www.cnblogs.com/lhb25/archive/2011/02/11/1951035.html 1.@font-face 定义一个字体 2.例子
- 显式意图启动一个Activity
显式意图主要是通过指定包名和类名开启一个组件,主要用于安全性要求高的,且不想被其他应用开启,可以不配置应用过滤器. 1.创建意图对象 Intent intent = new Intent(); 2.指 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- SpringMVC常用注解的用法
1. @PathVariable 当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvari ...
- oracle中将自建用户下的所有表删除
select 'drop table '||table_name||' ;' from user_tables;select 'drop sequence '||sequence_name||' ;' ...
- JS-抽奖系统-实现原理
有本事中奖的,过来找我换红包!!哈哈!! <meta charset="UTF-8"> <title>抽奖系统</title> <styl ...
- ElasticSearch-5.0安装head插件
环境 Windows10企业版X64 JDK-1.8 ElasticSearch-5.0.0 node-v4.5.0-x64.msi git客户端 步骤 安装node到D盘.如D:\nodejs. 把 ...
- C# 访问数据库
1. 首先引用和生命system.data.sqlClient 2. 使用sqlconnect类链接,sqlcommand类执行SQL命令,最后结果返回给sqlDataReader类或者是其他类 3. ...
- CSS知识回顾--读《CSS 那些事儿》笔记
由于之前有了解过CSS的相关知识,有了一定的基础,所以读起<CSS 那些事儿>不是很有难度,况且我现在读起来时,CSS3和HTML5比较流行,这里只是记录一些CSS知识记录,不做详细铺开, ...
- [Unity] Shader(着色器)输入输出和语义
在Unity5.x后, 已经支持了基于物理的光照模型,也就是常说的次时代引擎所必须具备的功能. 如果在Properties使用2D,CG里要用sampler2D,代表使用的是2维纹理 如果在Prope ...