zoukankan      html  css  js  c++  java
  • ContentProvider 共享数据

     
    onCreate 其它应用第一次访问时被调。

    insert 外部应用使用此方法添加数据。

    delete 外部应用使用此方法删除数据。

    update 外部应用使用此方法更新数据。

    query 外部应用使用此方法查询数据。

    getType 主要用于匹配数据类型(例如:接收系统广播时传递的数据类型),返回当前Uri所代表数据的MIME类型。如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/自定义类型。数据属于非集合类型数据,应该返回vnd.android.cursor.item/自定义类型。


    UriMatcher 用于匹配Uri

    UriMatcher类用于匹配Uri,它的用法如下:

    首先第一步把你需要匹配Uri路径全部给注册上,如下:

    //常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码
    
    UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    
    //如果match()方法匹配content://cn.loaderman.provider.personprovider/person路径,返回匹配码为1
    
    sMatcher.addURI(“cn.loaderman.provider.personprovider”, “person”, 1);//添加需要匹配uri,如果匹配就会返回匹配码
    
    //如果match()方法匹配content://cn.loaderman.provider.personprovider/person/230路径,返回匹配码为2
    
    sMatcher.addURI(“cn.loaderman.provider.personprovider”, “person/#”, 2);//#号为通配符
    
    switch (sMatcher.match(Uri.parse("content://cn.loaderman.provider.personprovider/person/10"))) {
    
    case 1
    
      break;
    
    case 2
    
      break;
    
    default://不匹配
    
      break;
    
    }
    

    注册完需要匹配的Uri后,就可以使用sMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用addURI()方法传入的第三个参数,假设匹配content://cn.loaderman.provider.personprovider/person路径,返回的匹配码为1


    ContentUris 获取和添加Uri信息

    ContentUris类用于获取Uri路径后面的ID部分,它有两个比较实用的方法:

    withAppendedId(uri, id)用于为路径加上ID部分:

    Uri uri = Uri.parse("content://cn.loaderman.provider.personprovider/person")
    
    Uri resultUri = ContentUris.withAppendedId(uri, 10);
    
    //生成后的Uri为:content://cn.loaderman.provider.personprovider/person/10
    
    parseId(uri)方法用于从路径中获取ID部分:
    
    Uri uri = Uri.parse("content://cn.loaderman.provider.personprovider/person/10")
    
    long personid = ContentUris.parseId(uri);//获取的结果为:10
    
    另外Uri类中还有一个静态方法withAppendedPath(baseUri, pathSegment)也可以在某个路径上继续添加路径:
    
    Uri uri = Uri.parse("content://cn.loaderman.provider.personprovider/person")
    
    Uri resultUri = Uri.withAppendedPath(uri, “update”);
    
    // 生成后的Uri为: content://cn.loaderman.provider.personprovider/person/update
    

  • 相关阅读:
    记录一下自己写PHP程序时走过的一些坑
    自己写了一个TCP攻击测压平台
    Centos 7x 安装 Telegram MTproxy代理【完美可用】
    "@阅后即焚"上线了!
    小白的机器学习坑3:粗大的安装CUDA
    小白的机器学习坑2:nvidia驱动的安装
    小白的机器学习坑1:ubuntu 18.04的安装
    小白的linux学习笔记9:安装nodejs和gitbook
    小白的linux笔记11:放弃gitbook,转战Sphinx
    小白的linux学习笔记10:安装nginx和第一个网页
  • 原文地址:https://www.cnblogs.com/loaderman/p/6421142.html
Copyright © 2011-2022 走看看