Android组件系列----ContentProvider内容提供商【5】
2、执行query()方法,查询全部记录(眼下一共两条记录)。后台输出效果例如以下:

经測试,其它方法也都是能够运行的。
事实证明,新建的另外一个project文件ContentResolverTest中。在里面执行单元測试。也是可以执行的(单元測试的代码不变,实现的CRUD功能也一模一样),也就是说,可以对ContentProviderTest01中的SQLite进行CRUD操作。
比如,执行query()方法,后台输出例如以下:

这样,我们的目的也就达到了。
【特别注意】
须要特别注意的是,代码中uri不要写错了,这些错误一旦发生。非常难被发现。
详细表如今:
1、清单文件里:
<provider
android:name=".内容提供者的类名"
android:authorities="包名.内容提供者的类名" >
</provider>
如:
<provider
android:name=".PersonContentProvider"
android:authorities="com.example.contentprovidertest01.PersonContentProvider" >
</provider>
2、ContentProvider类中的UriMatcher中的uri:

1 private static final UriMatcher URI_MATCHER = new UriMatcher(
2 UriMatcher.NO_MATCH);// 默认的规则是不匹配的
3 private static final int PERSON = 1; // 操作单行记录
4 private static final int PERSONS = 2; // 操作多行记录
5 // 往UriMatcher中加入匹配规则。 注意,这里面的url不要写错了,我就是由于写错了,半天没调试出来。哎···
6 static {
7 // 加入两个URI筛选
8 URI_MATCHER.addURI("com.example.contentprovidertest01.PersonContentProvider",
9 "person", PERSONS);
10 // 使用通配符#,匹配随意数字
11 URI_MATCHER.addURI("com.example.contentprovidertest01.PersonContentProvider",
12 "person/#", PERSON);
13 }

3、ContentProvider类中的getType()方法里面的代码:

1 @Override
2 public String getType(Uri uri) {
3 int flag = URI_MATCHER.match(uri);
4 switch (flag) {
5 case PERSON:
6 return "vnd.android.cursor.item/person"; // 假设是单条记录,则为vnd.android.cursor.item/
7 // + path
8 case PERSONS:
9 return "vnd.android.cursor.dir/persons"; // 假设是多条记录,则为vnd.android.cursor.dir/
10 // + path
11 }
12 return null;
13 }

4、ContentResolver类中的uri:(以insert()方法为例)

1 //測试方法:向数据库中加入记录。 假设之前没有数据库。则会自己主动创建
2 public void insert() {
3 // 使用内容解析者ContentResolver訪问内容提供者ContentProvider
4 ContentResolver contentResolver = getContext().getContentResolver();
5 ContentValues values = new ContentValues();
6 values.put("name", "生命贰号");
7 values.put("address", "湖北");
8 // content://authorities/person
9 // http://
10 Uri uri = Uri
11 .parse("content://com.example.contentprovidertest01.PersonContentProvider/person");
12 contentResolver.insert(uri, values);
13 }
Android组件系列----ContentProvider内容提供商【5】的更多相关文章
- Android组件系列----ContentProvider内容提供者
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android组件系列----ContentProvider内容提供者【1】
[正文] 一.ContentProvider简单介绍: ContentProvider内容提供者(四大组件之中的一个)主要用于在不同的应用程序之间实现数据共享的功能. ContentProvider能 ...
- Android组件系列----ContentProvider内容提供者【4】
(4)单元測试类: 这里须要涉及到另外一个知识:ContentResolver内容訪问者. 要想訪问ContentProvider.则必须使用ContentResolver. 能够通过ContentR ...
- Android组件系列----BroadcastReceiver广播接收器
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android组件系列----Activity组件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android组件系列----Android Service组件深入解析
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android组件系列----Intent详解(转载笔记)
[正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用 ...
- Android组件系列----Intent详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android 组件系列-----Activity初步
在上篇博文讲解了Android的Activity这个组件的启动流程后,接下来我们就来看看我们的Activity与我们的布局文件的关系吧 我们先来看看一个最简单的布局文件的内容: <Relativ ...
随机推荐
- SVN的log,cat,list,diff的使用
svn log 展示给你主要信息:每个版本附加在版本上的作者与日期信息和所有路径修改. svn diff 显示特定修改的行级详细信息. svn cat ...
- 第一章 andrid visdio 安装
第一章 andrid visdio 安装与环境搭建 一.Android Studio简介 Android Studio是Google新发布的Android应用程序开发环境,Android Stud ...
- cocos2d-x2.2.3和android平台环境的搭建
准备工作:1.我只是将cocos2d-x移植到android平台,所以默认为大家已经将android平台搭建完成了(eclipse和android SDK已经配置好,java环境搭建好) 2.下载an ...
- Javascript语言精粹之Array常用方法分析
Javascript语言精粹之Array常用方法分析 1.Array常用方法分析 1.1 Array.prototype.sort() Javascript的默认比较函数假定被排序元素都是字符串,所以 ...
- MySQL在大数据Limit使用
它已被用于Oracle一世.但今天,很惊讶,MySQL在对数量级的性能,甚至差距如此之大不同的顺序相同的功能. 看看表ibmng(id,title,info) 只要 id key 指数title ...
- 第三方框架和ARC
在使用了ARC机制的项目中使用第三方开源框架的方法: 1.在第三方开源框架的每个.m文件都设置成 -fno-objc-arc 具体方法:TARGETS--->Build Phases -- ...
- 瑞丽的SQL-SQL Server的表旋转(行列转换)
所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005開始提供的新技术.因此,如果希望使用此功能,须要将数据库的兼容级别设置为90.表旋转在某些方面也是攻克了表的 ...
- 每天进步一点点——再次了解Linux进程ID
转载请注明出处:http://blog.csdn.net/cywosp/article/details/38968011 1. 概述 众所周知,进程(process)是一个可运行程序的实例,可是在Li ...
- iOS8数字键盘加左下角完成button
iOS8数字键盘加左下角完成button的核心代码如下面: - (void)addDoneButtonToNumPadKeyboard { UIButton *doneButton = [UIButt ...
- Directx11学习笔记【二十二】 用高度图实现地形
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5827714.html 在前面我们曾经实现过简单的地形(Direct ...