ContentProvider基础
来源:互联网 发布:小白素材vip源码 编辑:程序博客网 时间:2024/04/30 14:11
ContentProvider应该和SqliteDataBase一起使用
使用方法:
一、新建ContentProvider实现类 1.实现query,insert,update,delete,getType五个方法 2.定义自定义代码(用于UriMather匹配Uri,然后进行判断使用哪个Uri) 3.初始化UriMather 4.实现1.中五个方法具体内容 例如query:
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteDatabase db = myHelper.getReadableDatabase(); Cursor cursor = null; switch (uriMatcher.match(uri)){ case BOOK_DIR: // 查询Book表中的所有数据 cursor = db.query("Book",projection, selection, selectionArgs, null, null,sortOrder); break; case BOOK_ITEM: String bookId = uri.getPathSegments().get(1); cursor = db.query("Book",projection, "id = ?", new String []{bookId}, null, null,sortOrder); break; case CATEGORY_DIR: cursor = db.query("Category",projection, selection, selectionArgs, null, null,sortOrder); break; case CATEGORY_ITEM: String categoryId = uri.getPathSegments().get(1); cursor = db.query("Category", projection, "id = ?", new String[] { categoryId }, null, null, sortOrder); break; default: break; } return cursor; }
insert: public Uri insert(Uri uri, ContentValues contentValues) { // 添加数据 SQLiteDatabase db = myHelper.getWritableDatabase(); Uri uriReturn = null; switch (uriMatcher.match(uri)) { case BOOK_DIR: case BOOK_ITEM: long newBookId = db.insert("Book", null, contentValues); uriReturn = Uri.parse("content://" + AUTHORITY + "/book/" + newBookId); break; case CATEGORY_DIR: case CATEGORY_ITEM: long newCategoryId = db.insert("Category", null, contentValues); uriReturn = Uri.parse("content://" + AUTHORITY + "/category/" + newCategoryId); break; default: break; } return uriReturn;}getType:获取 Uri 对象所对应的 MIME 类型public String getType(Uri uri){ switch (uriMatcher.match(uri)) { case BOOK_DIR: return "vnd.android.cursor.dir/vnd.fzd.com.content.provider.book"; case BOOK_ITEM: return "vnd.android.cursor.item/vnd.fzd.com.content.provider.book"; case CATEGORY_DIR: return "vnd.android.cursor.dir/vnd.fzd.com.content.provider.category"; case CATEGORY_ITEM: return "vnd.android.cursor.item/vnd.fzd.com.content.provider.category"; default: break; } return null;}
二、MEME类型命名规则
1. 必须以 vnd 开头。2. 如果内容 URI 以路径结尾,则后接 android.cursor.dir/,如果内容 URI 以 id 结尾,则后接 android.cursor.item/。3. 最后接上 vnd.<authority>.<path>。所以,对于 content://com.example.app.provider/table1 这个内容 URI,它所对应的 MIME类型就可以写成:vnd.android.cursor.dir/vnd.com.example.app.provider.table1对于 content://com.example.app.provider/table1/1 这个内容 URI,它所对应的 MIME 类型就可以写成:vnd.android.cursor.item/vnd.com.example.app.provider.table1
0 0
- ContentProvider 基础
- ContentProvider基础
- Android基础ContentProvider简介
- 基础四:ContentProvider
- ContentProvider的基础
- Android ContentProvider基础
- Android基础----ContentProvider
- android基础(ContentProvider)
- Android基础——ContentProvider
- android ContentProvider(内容提供者)基础
- android基础学习之ContentProvider
- Android基础之创建ContentProvider
- ContentProvider的实例基础介绍
- Android基础之初识ContentProvider
- ContentProvider---基础总结篇之六:ContentProvider之读写联系人 .
- ContentProvider---基础总结篇之七:ContentProvider之读写短消息 .
- Android基础 : Android ContentProvider和getContentResolver
- Android基础4(内容提供者ContentProvider)
- VS2008中关于“MessageBoxW”: 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)
- ClassNotFoundException: org.apache.ws.commons.schema.resolver.URIResolver
- 删除jar包的某些class重新打jar包
- 常用控件的初始化
- ContentProvider基础
- C/C++ 关于大小端模式
- UVA1594
- 前端学习总结(十七)React Native——移动开发的未来趋势
- 一段snmp代码
- SQLite 总结
- Poj 1741 Tree
- 倒排句子的单词
- 不惑JAVA之JAVA基础 - NIO (二)