Android组件系列----ContentProvider内容提供者【5】
来源:互联网 发布:带函数冒泡排序c语言 编辑:程序博客网 时间:2024/05/22 13:46
2、运行query()方法,查询所有记录(目前一共两条记录)。后台输出效果如下:
经测试,其他方法也都是可以执行的。
事实证明,新建的另外一个工程文件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 // + path11 }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 = Uri11 .parse("content://com.example.contentprovidertest01.PersonContentProvider/person");12 contentResolver.insert(uri, values);13 }
0 0
- Android组件系列----ContentProvider内容提供者【5】
- Android组件系列----ContentProvider内容提供者【1】
- Android组件系列----ContentProvider内容提供者【2】
- Android组件系列----ContentProvider内容提供者【3】
- Android组件系列----ContentProvider内容提供者【4】
- Android组件系列----ContentProvider内容提供者
- Android组件系列----ContentProvider内容提供者
- Android 组件 ContentProvider 内容提供者
- Android四大组件之一ContentProvider(内容提供者)
- Android四大组件之内容提供者--ContentProvider
- Android组件之ContentProvider(内容提供者)
- Android四大组件之内容提供者ContentProvider
- android四大组件之一内容提供者contentprovider
- Android四大组件ContentProvider 内容提供者
- Android四大组件之内容提供者--ContentProvider
- Android ContentProvider(内容提供者)
- android内容提供者ContentProvider
- Android--- ContentProvider(内容提供者)
- 关于MFC中子对话框建立并设置背景的一些记录
- iOS判断某个类是否可以调用某个类方法
- C# 只允许运行一个实例
- android开源项目地址大全
- CSDN第一天
- Android组件系列----ContentProvider内容提供者【5】
- C学习之接口和实现
- android 给图片加文字水印
- Android内存泄露利器(hprof篇)
- oracle 常用命令
- LeetCode——Swap Nodes in Pairs
- (IT/互联网行业)你给自己当前的职位拼几分?(评分标准,个人看法,勿喷~)
- 关于只读成员函数
- 程序员必须了解的正则表达式——常用正则表达式