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

<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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 Content Provider用法有两种: 1、使用现有的CP来读取和操作相应程序中的数据;比如系统电...
    在你左右2018阅读 706评论 0 2
  • 第 7 章 跨程序共享数据,探究内容提供器 一:ContentResolver 的基本用法 如果想要访问内容提供器...
    jesse0阅读 558评论 0 2
  • 概述 Android提供专门用于不同应用间进行数据共享的方式,底层实现是Binder,但是使用的过程比AIDL简单...
    MC_Honva阅读 4,255评论 0 2
  • 家乡的桂花树应该开了,10月金桂,一定香味浓烈到醉人,成都的银杏也该掉叶子了,满地金黄。 这两日思绪是随机的,有时...
    洛宝阅读 190评论 0 0
  • 我妈给我讲过一件事:吃枣,忘了哪一年发生的!迫于生计我妈在外打工上十年,从我高中起到我生孩子那年,因为我弟弟那年也...
    迷人的肉肉阅读 291评论 0 0