Android四大组件_ContentProvider
ContentProvider理解
1)为什么要有ContentProvider?
一个应用需要访问另外一个应用的数据库表数据,但一个应用的数据库文件是私有的,其他应用不能直接访问。
故Android提供了ContentProvider和ContentResolver来实现:通过ContentProvider将数据库表暴露给其他应用,其他应用通过ContentResolver去调用Provider暴露的接口(URI),以实现进程间的通讯。
2)ContentProvider是什么
ContentProvider:四大应用组件之一,通过Uri来进行交流
【Uri:统一资源标识符,根据这个Uri找到某个资源文件】
相关API
1)ContentProvider:内容提供者类
onCreate()\query()\Insert()\delete()\update()
2)ContentResolver:内容解析类
getContentResolver()\Insert()\delete()\update()\query();
registerContentObserver()\unregisterCOntentObserver()\notifyChange();
3)Uri:包含一个具有一定格式的字符串所对应资源的类
parse();
4)UriMatcher:用于识别Uri的一个Uri容器
void addURI(String authority,String path,int code); 添加一个合法的URI
int match(Uri uri); 匹配指定的Uri,返回匹配码
5)ContentUris:操作Uri的工具类
long parseId(Uri contentUri); 解析Uri,得到其中的id
Uri withAppendedId(Uri contentUri, long id); 添加id到指定的Uri中
使用ContentProvider步骤
1.编写ContentProvider子类
class StudentContentProvider extends ContentProvider {
//实现inert、delete、update和query等方法
}
2.在manifest.xml中注册
Exported属性指定是否可以让其他应用访问
3.得到其对象
context.getContentResolver()
4.使用其对象
inert()、delete()、update()和query() 系统自动找到匹配的ContentProvider对象来操作数据
registerContentObserver(Uri uri, boolean notify,ContentObserver observer)注册uri的监听
unregisterContentObserver(ContentObserver observer)解注册uri的监听
notifyChange(Uri uri, ContentObserver observer)通知监听器