ContentProvider使用

1.用getContentResolver()获取ContentResolver类的实例

2.ContentProver对象有query()、update()、delete()、insert()方法,需要传入一个URI,格式为:content://+权限(包名)+路径(表名等),返回的是一个Cursor对象

3.运用系统的Provider,如查询电话薄:

getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null);

4.自定义ContentProvider

1)继承ContentProvider类,并重写

onCreate()(完成数据库的更新和初始化)

query() insert() update() delete()   DataBase的增删改查

getType()(根据传入内容的URI返回MIME类型,规则:由URI解析得到是哪个代码,即哪个表哪个数据,返回                                                                               URI:content://com.example.app.provrder/table1(多条数据) MIME:vnd.android.cursor.dir/com.example.app.provrder.table1(URI以表结束) URI:content://com.example.app.provrder/table1/1(单条数据) MIME:vnd.android.cursor.dir/com.example.app.provrder.table1(URI以Item结束)

借助UriMatcher(对URI进行解析,从中提取需要访问的表和数据),用法如下:(权限,路径,自定义代码)

添加:uriMatcher.addURI("com.example.app.provrder","table1",TABLE1_DIR);

使用:uriMatcher.match(uri) {case TABLE1_DIR: ....}比较方便匹配Uri,直接用一个代码可以代替一个URI

2)注册(在application里面定义)

3)使用(权限+路径)

用getContentResolver()获取ContentResolver类的实例

调用各重写方法,进行数据库的操作getContentResolver().query(content://com.example.database.provider/table1,null,null,null)

你可能感兴趣的:(ContentProvider使用)