ContentProvider基础
2016-05-19 20:06
429 查看
ContentProvider应该和SqliteDataBase一起使用
使用方法:
二、MEME类型命名规则
使用方法:
一、新建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
相关文章推荐
- 为PHP7安装Windows Server 2012 R2过程记录
- 破解TP-Link路由-嗅探PPPoE拨号密码
- OSX给PHP添加pdo_mysql扩展
- PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法
- OSX为PHP添加mysql扩展
- phpexcel导出excel中文乱码问题解决
- OSX PHP添加gettext支持
- OSX PHP添加intl支持
- yii
- 解决OSX上面PHP curl SSLRead() error
- PHP函数用法
- 基于在生产环境中使用php性能测试工具xhprof的详解
- php aes 128 CBC加密、解密函数
- php函数
- VxWorks_使用ftp服务
- 2016/05/19 thinkphp 3.2.2 文件上传
- 基础总结篇之八:创建及调用自己的ContentProvider
- 基础总结篇之七:ContentProvider之读写短消息
- 基础总结篇之六:ContentProvider之读写联系人
- memocache for CakePHP3.2