美文网首页
关于内容提供器的笔记

关于内容提供器的笔记

作者: Hugh1029 | 来源:发表于2017-07-24 11:23 被阅读0次

    这是对内容提供器学习内容回顾的笔记整理,若有同学查看发现错误欢迎指正。

    个人觉得要学习内容提供器首先要对SQLite数据库的增删改查有一定的了解,这样在学习过程中才能比较轻松,否则将会是一个较为痛苦的过程。

    1.ContentProvider与ContentResolver

    ContentProvider是一个比较重要的内容,他用于提供内容供给其他程序来访问本程序中的数据。在创建ContentProvider的时候,可以选择android studio的new=>other=>content provider,勾选中exported与Enabled;也可以手动创建,但是需要在AndroidMainfest.xml中去手动注册provider。

    自己创建的ContentProvider需要继承ContentProvider类,然后重写onCreate(),query(),insert(),update(),delete(),getType()这6个方法;而这其中的增删改查方法在ContentResolver

    而ContentResolver是一个用来去访问其他程序的类,实例通过getContentResolver()来获取;该类提供的方法包括insert(),update(),delete(),query()等,用来直接访问到ContentProvider中相对应的insert(),update(),delete(),query()方法;

    2.UriMatcher的使用

    ContentResolver请求都是以URI的请求方式来请求的。而内容提供器的URI的格式为:content://<authority>/<path>;

    我们通过UriMatcher来做路径匹配。而UriMatcher提供了两个方法,一个是addURI(ahthority,path,value)。其中value为匹配这个路径成功后返回的值。

    一个是match()方法,用于匹配路径。

    用法如下:

    UriMatcher matcher = new UriMatcher();

    matcher.addURI("cn.answering.provider.content","Book",1);

    在update等方法中,对路径匹配:

    matcher.match(uri);

    同时,URI中的通配符为:*表示匹配任意长度字符,#为任意长度数字。

    一般匹配任意表:content://cn.answering.provider.content/*

    匹配任意一行数据:content://cn.answering.provider.content/table/#

    相关文章

      网友评论

          本文标题:关于内容提供器的笔记

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