zoukankan      html  css  js  c++  java
  • contentProvider

    Android一共有四大组件:activitycontentProviderservice、Broadcast Receiver》》》

    下面介绍一下ContentProvider

    内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个 ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。

    1contentProvider可以让不同程序之间的数据进行交换,它把不同应用程序的数据库操作标准统一起来,并且将这个标准暴露给其他应用程序。

    2ContentProvider的操作方法

    a) Boolean onCreate()    //启动组件时调用

    b) Int delete(Uri uriString selectionSting [ ] selectionArgs
    // 根据指定的uri删除数据,并返回删除的数据行数

    c) Finnal Context getContext()
    //  返回context对象

    d) String getType(Uril uril)
    //  根据指定的uri返回操作的MIME类型

    e) 

    f) Uril insert(Uri uri,ContextVaules,values )
    //  根据指定的uri进行增加数据的操作,并且返回增加后的uri在此uri中会附带新的数据的id

    g) Cursor query(Uri uri, String [ ]projectionString selectionString[ ]selectionArgs,String sortOrder )
    //根据指定的uri执行查询操作,所有的查询结果通过cursor对象返回

    h) Int update (Uri uriContentValues ValuesString selectionstring[]selectionArgs)

    //  根据指定的uri进行数据的更新操作,并且返回更新数据的行数

    3、Uri类常用的方法:

    String decode(String s)  // 对字符串进行编码

    String encode(String s)   //对编码后的字符串进行解码

    Uri fromFile(File file)   // 从指定的文件之中读取uri

    Uri withAppendedPath(Uri baseUriString pathSegment

    //  uri后面加参数 

    Uri parseString uriString)  // 将给出的字符串地址变为uri对象

    4、Uri 解释:

    content://hup.lyl.contentProvider/mytable/3

    //  Content://包名(一般情况下)/数据表/id

    Content:  //  协议

    Authority(包名):  //  外部调用者可以根据这个标识找到它。要用小写字母。

    Pathmytable/3): 

     //   content://Authority/Path      表的全部数据

    //   content://Authority/Path/id       id的数据

    //   content://Authority/Path/id/属性   属性内容

    注意:

    a)如果操作的数据属于集合类型(拿全部数据),那么MIME类型字符串应该以vnd.android.cursor.dir/开头.   

    //  Uri为content://com.ljq.provider.personprovider/person,那么返回的MIME类型字符串应该为:"vnd.android.cursor.dir/person"。

    b)如果要操作的数据属于非集合类型数据(拿单个数据),那么MIME类型字符串应该以vnd.android.cursor.item/开头.

    //  Uri为content://com.ljq.provider.personprovider/person,那么返回的MIME类型字符串应该为:"vnd.android.cursor.item/person"。

    c)  用 DESC 表示按倒序排序(即:从大到小排序)

      //  SORT_ORDER="_id DESC"
    d)  用 ACS   表示按正序排序(即:从小到大排序)

    5、UriMatcher匹配uri

    UriMatcher  sMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
       //    常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码 
            sMatcher.addURI(com.xxx.provider.myproviderperson, 1); 

    //添加需要匹配uri,如果匹配就会返回匹配码  对全部数据操作

      //  如果match()方法匹配content://com.xxx.provider.myprovider/person路径,返回匹配码为
            sMatcher.addURI(com.xxx.provider.myproviderperson / #, 2);  

    //    #号为通配符   对单个数据操作
            //如果match()方法匹配content://com.xxx.provider.myprovider/person/230路径,返回匹配码为

    6、contentProvider在程序的操作中只是提供一个操作标准,所以需要用到Android.content.ContentResolve类完成,这个类的操作方法是和contentProvider一一对应的,调用它的方法就相当于调用了contentProvider的方法。

    7、contentResolver是一个抽象类,所以想要取得contentResolver类的实例化对象进行操作,则需要依靠Android.app.activity类的方法

    Public contentResolve getcontentResolve()

    8、uri的辅助操作类:contentUris

    由于所有数据都要通过uri进行传递,以增加操作为例,当用户执行完增加数据操作后,往往需要增加后的数据id通过uri进行返回,当接收到这个uri的时候就需要从里面取得增加数据的id

    这时就用到了Android.content.contentUris的辅助工具类:

    指定的uri中取出idlong parseId(uri contentUri

    指定的uri之后增加id参数: uri withAppendedId(uri ContentUrilong id

    8、SQLite的表格实现BaseColumns接口:

    BaseColumns简单的添加两个字段
    public static final String _ID = "_id";
    public static final String _COUNT = "_count";

    使用通用名称无论对其整体结构 (即其他非 ID 列) 以统一的方式可以解决任何数据的项目,Android 平台 (和开发人员以及)。在接口/类中定义的常用的字符串常量可以避免一般和各地代码的拼写错误。

          



  • 相关阅读:
    php的单例模式
    php如何读取ini文件
    MIDI制作的相关软件
    PHP网站http替换https
    Linux Samba服务器配置
    DHCP安装配置详解
    html表格内容自动换行
    js版根据经纬度计算多边形面积(墨卡托投影)
    根据经纬度计算多边形面积
    百度地图API画多边型,测面积
  • 原文地址:https://www.cnblogs.com/mydomainlistentome/p/4397934.html
Copyright © 2011-2022 走看看