这是对内容提供器学习内容回顾的笔记整理,若有同学查看发现错误欢迎指正。
个人觉得要学习内容提供器首先要对SQLite数据库的增删改查有一定的了解,这样在学习过程中才能比较轻松,否则将会是一个较为痛苦的过程。
1.ContentProvider与ContentResolver
ContentProvider是一个比较重要的内容,他用于提供内容供给其他程序来访问本程序中的数据。在创建ContentProvider的时候,可以选择android studio的new=>other=>content provider,勾选中exported与Enabled;也可以手动创建,但是需要在AndroidMainfest.xml中去手动注册provider。
自己创建的ContentProvider需要继承ContentProvider类,然后重写onCreate(),query(),insert(),update(),delete(),getType()这6个方法;而这其中的增删改查方法在ContentResolver
而ContentResolver是一个用来去访问其他程序的类,实例通过getContentResolver()来获取;该类提供的方法包括insert(),update(),delete(),query()等,用来直接访问到ContentProvider中相对应的insert(),update(),delete(),query()方法;
2.UriMatcher的使用
ContentResolver请求都是以URI的请求方式来请求的。而内容提供器的URI的格式为:content://<authority>/<path>;
我们通过UriMatcher来做路径匹配。而UriMatcher提供了两个方法,一个是addURI(ahthority,path,value)。其中value为匹配这个路径成功后返回的值。
一个是match()方法,用于匹配路径。
用法如下:
UriMatcher matcher = new UriMatcher();
matcher.addURI("cn.answering.provider.content","Book",1);
在update等方法中,对路径匹配:
matcher.match(uri);
同时,URI中的通配符为:*表示匹配任意长度字符,#为任意长度数字。
一般匹配任意表:content://cn.answering.provider.content/*
匹配任意一行数据:content://cn.answering.provider.content/table/#
网友评论