关于内容提供器的笔记

这是对内容提供器学习内容回顾的笔记整理,若有同学查看发现错误欢迎指正。

个人觉得要学习内容提供器首先要对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:///;

我们通过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/#

你可能感兴趣的:(关于内容提供器的笔记)