ContentProvider的使用
来源:互联网 发布:淘宝衣服相同钱不一样 编辑:程序博客网 时间:2024/06/05 05:49
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.cattsoft.deliersystem.constants.SQLProviderConstants;
/**
* 创建数据库的工具类
*
* @author 肖秋
*
*/
public class SqliteHelper extends SQLiteOpenHelper implements SQLProviderConstants {
public SqliteHelper(Context context) {
super(context, SQL_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DOWNLOAD_FILE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DELETE_DOWNLOAD_FILE_TABLE);
onCreate(db);
}
}
package com.cattsoft.deliersystem.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import com.cattsoft.deliersystem.constants.SQLProviderConstants;
/**
* 文书下载信息内容提供者工具类
*
* @author 肖秋
*
*/
public class DownloadFileProvider extends ContentProvider implements
SQLProviderConstants {
private static final int DOWNLOADS = 1;
private static final int DOWNLOAD_ID = 2;
private SqliteHelper helper;
// 定义一个uri的匹配器,用于匹配uri,如果路劲不满足条件,返回-1
private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
static {
matcher.addURI(AUTHORITY + "." + FILE_DOWNLOAD_PATH, FILE_DOWNLOAD_PATH,
DOWNLOADS);
matcher.addURI(AUTHORITY + "." + FILE_DOWNLOAD_PATH, FILE_DOWNLOAD_PATH + "/#",
DOWNLOAD_ID);
}
@Override
public boolean onCreate() {
helper = new SqliteHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = helper.getReadableDatabase();
switch (matcher.match(uri)) {
case DOWNLOAD_ID:
long id = ContentUris.parseId(uri);
selection = selection == null ? "id = " + id : "id = " + id
+ " AND " + selection;
case DOWNLOADS:
Cursor c = db.query(FILE_DOWNLOAD_TABLE_NAME, projection, selection,
selectionArgs, null, null, sortOrder);
return c;
default:
throw new IllegalArgumentException("No Match Uri " + uri);
}
}
@Override
public String getType(Uri uri) {
switch (matcher.match(uri)) {
case DOWNLOAD_ID:
return "vnd.android.cursor.item/" + FILE_DOWNLOAD_PATH;
case DOWNLOADS:
return "vnd.android.cursor.dir/" + FILE_DOWNLOAD_PATH;
default:
throw new IllegalArgumentException("No Match Uri " + uri);
}
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = helper.getWritableDatabase();
switch (matcher.match(uri)) {
case DOWNLOADS:
long id = db.insert(FILE_DOWNLOAD_TABLE_NAME, null, values);
return ContentUris.withAppendedId(uri, id);
default:
throw new IllegalArgumentException("No Match Uri " + uri);
}
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db = helper.getWritableDatabase();
switch (matcher.match(uri)) {
case DOWNLOAD_ID:
long id = ContentUris.parseId(uri);
selection = selection == null ? "id = " + id : "id = " + id
+ " AND " + selection;
case DOWNLOADS:
return db.delete(FILE_DOWNLOAD_TABLE_NAME, selection, selectionArgs);
default:
throw new IllegalArgumentException("No Match Uri " + uri);
}
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db = helper.getWritableDatabase();
switch (matcher.match(uri)) {
case DOWNLOAD_ID:
long id = ContentUris.parseId(uri);
selection = selection == null ? "id = " + id : "id = " + id
+ " AND " + selection;
case DOWNLOADS:
return db.update(FILE_DOWNLOAD_TABLE_NAME, values, selection,
selectionArgs);
default:
throw new IllegalArgumentException("No Match Uri " + uri);
}
}
}
千万不要忘记在配置中添加内容提供者
<!-- 文书下载内容提供者 -->
<provider
android:name="com.cattsoft.deliersystem.provider.DownloadFileProvider"
android:authorities="com.cattsoft.provider.fileDownloadPath" >
</provider>
package com.cattsoft.deliersystem.constants;
import android.net.Uri;
/**
* 建立SQLite数据库和内容提供者用到的常量
*
* @author 肖秋
*
*/
public interface SQLProviderConstants {
/** 内容提供者中用户信息的访问路径 */
public static final String AUTHORITY = "com.cattsoft.provider";
/** 内容提供者中访问文件下载地址所带的后缀 */
public static final String FILE_DOWNLOAD_PATH = "fileDownloadPath";
/** 通过内容提供者访问文书下载数据的URI */
public static final Uri FILE_DOWNLOAD_URI = Uri.parse("content://" + AUTHORITY
+ "." + FILE_DOWNLOAD_PATH + "/" + FILE_DOWNLOAD_PATH);
/** 数据名称 */
public static final String SQL_NAME = "DelierSystem.db";
/** 下载表的表名 */
public static final String FILE_DOWNLOAD_TABLE_NAME = "fileDownload";
/** 创建文书下载表的SQL语句 */
public final static String CREATE_DOWNLOAD_FILE_SQL = "CREATE TABLE IF NOT EXISTS "
+ FILE_DOWNLOAD_TABLE_NAME
+ " (id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "archiveId INTEGER CONSTRAINT archiveId_fk REFERENCES "
+ ARCHIVE_TABLE_NAME
+ "(archiveId), fileId INTEGER, downloadId INTEGER, isdownload BOOLEAN, fileName varchar(50), "
+ "savePath varchar(200), fileUrl varchar(200))";
/** 删除文书下载表的SQL语句 ,根据建立数据库的版本号不同,用户对数据的升级 */
public final static String DELETE_DOWNLOAD_FILE_TABLE = "DROP TABLE IF EXISTS "
+ FILE_DOWNLOAD_TABLE_NAME;
}
- Android ContentProvider的使用
- contentProvider的使用总结
- ContentProvider的使用
- ContentProvider的使用
- ContentProvider的基本使用
- 【Android】ContentProvider的使用
- ContentProvider的使用
- ContentProvider的使用
- 自定义ContentProvider的使用
- ContentProvider的使用
- Android ContentProvider的使用
- ContentProvider的使用小结
- ContentProvider的使用
- ContentProvider的使用
- ContentProvider的使用小结
- android ContentProvider的使用
- ContentProvider的使用
- ContentProvider的使用
- [代码安全] 小心volatile的原子性误解
- ubuntu下安装ssh如下报错的解决办法
- 第二十章 RTC实时时钟实验
- 黑马程序员——Objective-C——简介
- ListView 滑动时组件数据或图片变化
- ContentProvider的使用
- crash引起播放列表退出的问题分析过程分享
- cocos2dx 3.x 异步加载
- 仿唯品会 点击加背景图片
- php生成guid
- Android问题集锦之三十一:Android Studio: Plugin with id 'android-library' not found
- C++中的虚函数表解析
- Struts2 验证码图片实例
- Windows下安装 android maven插件教程