1.ContentPRovider是什么?
•ContentProvider是四大应用组件之一•当前应用使用ContentProvider将数据库表数据操作暴露给其它应用访问•其它应用需要使用ContentResolver来调用ContentProvider的方法•它们之间的调用是通过Uri来进行交流的2.相关API
•ContentProvider : 内容提供者类//provider对象创建后调用(应用安装成功或手机启动完成)
publicabstract boolean onCreate();
//查询表数据
Cursorquery(Uri uri,String[] projection,Stringselection, String[] selectionArgs)
//插入表数据
Uri insert(Uri uri, ContentValuesvalues);
//删除表数据
intdelete(Uri uri,String selection, String[] selectionArgs)
//更新表数据
update(Uriuri, ContentValuesvalues, String selection,String[]selectionArgs);
•ContentResolver: 内容提供者的解析类//得到它的对象
context.getContentResolver()
//调用provider进行数据库CRUD操作
Insert()、delete()、update()、query()
//注册uri的监听
registerContentObserver(Uriuri, booleannotify,ContentObserverobserver)
//解注册uri的监听
unregisterContentObserver(ContentObserverobserver)
//通知监听器
notifyChange(Uriuri, ContentObserverobserver)
•Uri:包含请求地址数据的类//得到其对象
Uristatic parse(String uriString)
A :是一个前缀,表示是由ContentProvider提供,固定不变
B :authority, 标识是哪个Provider,不同的Provider此部分必须不同。
C :对应于哪张表 student
D :id值,对应表中的哪条记录
•UriMatcher : 用于匹配Uri的容器//添加一个合法的URI
void addURI(Stringauthority, String path, intcode)
//匹配指定的uri, 返回匹配码
intmatch(Uri uri)
•ContentUris : 解析uri的工具类//解析uri, 得到其中的id
long parseId(UricontentUri)
//添加id到指定的uri中
Uri withAppendedId(UricontentUri,long id)
3.编写ContentProvider的基本步骤
•编写ContentProvider子类classStudentContentProviderextends ContentProvider{
//实现inert、delete、update和query等方法
}
•在manifest.xml中注册<provider
android:name=".StudentContentProvider"
android:authorities="com.atguigu.provider.studentprovider"
android:exported="true"/>
•得到其对象context.getContentResolver()
•使用其对象inert()、delete()、update()和query()
系统自动找到匹配的ContentProvider对象来操作数据
registerContentObserver(Uriuri, booleannotify,ContentObserverobserver)
注册uri的监听
unregisterContentObserver(ContentObserverobserver)
解注册uri的监听
notifyChange(Uriuri, ContentObserverobserver)
通知监听器
新闻热点
疑难解答