OPhone开发之下载
2010-10-19 20:56:09 来源:WEB开发网本文主要介绍在OPhone中如何实现文件的下载、暂停、恢复、重试以及清除。我们仅仅使用ContentResolver的insert、query、update、delete就可以完成上述功能。对于上层的开发者来说,下载的启动、进行、完成、出错仅仅体现在数据库中对应下载记录的这一行数据的变化。下面我们分别看一下。
1、 下载
在OPhone中要下载一个文件,实际上就是添加一条记录到数据库表中。这就需要提供被添加的表名以及这条记录的数据,如下:
复制到剪贴板 Java代码
1. Uri contentUri = getContentResolver().insert(
2. Uri.parse("content://downloads/download"), values);
这里,Uri.parse("content://downloads/download")就是对应的数据库表,它实际的位置在
什么地方呢,让我们看看:
复制到剪贴板 Java代码
1. .# adb shell
2.
3. # cd /data/data/com.android.providers.downloads/databases
4.
5. # ls
6.
7. downloads.db
8.
9. # sqlite3 downloads.db
10.
11. SQLite version 3.5.9
12.
13. Enter ".help" for instructions
14.
15. sqlite> .tables
16.
17. android_metadata downloads
18.
19. sqlite>
如上黑体字,downloads这个表对外的接口就是这个uri,稍后我们会在不同的状态时看看表里数据有什么变化。
我们继续看第二个参数,values是一个ContentValues对象,这里面存放着我们本次下载的信息也就是downloads表中该行的输入数据。
复制到剪贴板 Java代码
1. ContentValues values = new ContentValues();
2. values.put(Downloads.COLUMN_TITLE, filename);
3. values.put(Downloads.COLUMN_URI, url);
4. values.put(Downloads.COLUMN_FILE_NAME_HINT, filename);
5. values.put(Downloads.COLUMN_NOTIFICATION_PACKAGE, getPackageName());
6. values.put(Downloads.COLUMN_NOTIFICATION_CLASS,
7. TestDownload.DownloadReceiver.class.getName());
8. values.put(Downloads.COLUMN_VISIBILITY,
更多精彩
赞助商链接