美文网首页
ContentProvider使用

ContentProvider使用

作者: minzizi | 来源:发表于2017-10-10 10:13 被阅读0次

    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里面定义)

    <provider android:name="com.example.dataBasetest.DataBaseProvider"(类名)            android:authorities:"com.example.database.provider"(权限)                                                          android:exported:true(可以被其他应用使用)/>

    3)使用(权限+路径)

    用getContentResolver()获取ContentResolver类的实例

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

    相关文章

      网友评论

          本文标题:ContentProvider使用

          本文链接:https://www.haomeiwen.com/subject/wmzmyxtx.html