ContentProvider

ContentProvider

总:ContentProvider可以在不同应用之间实现数据共享

分:

1.Uri:包含A,B,C,D四部分

content://com.llf.test/tablename/1

A:标准前缀,用来说明一个Content Provider控制这些数据,无法改变的;"content://"
B:URI 的标识,用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。它定义了是哪个Content Provider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的类名。这个标识在 元素的 authorities属性中说明:一般是定义该ContentProvider的包.类的名称
C:路径(path),通俗的讲就是你要操作的数据库中表的名字,或者你也可以自己定义,记得在使用的时候保持一致就可以了;"content://com.bing.provider.myprovider/tablename"
D:如果URI中包含表示需要获取的记录的ID;则就返回该id对应的数据,如果没有ID,就表示返回全部; "content://com.bing.provider.myprovider/tablename/#" #表示数据id.

把一个字符串转化为uri

Uri uri = Uri.parse("content://com.bing.provider.personprovider/person")


2.UriMatcher类使用介绍--UriMatcher类用于匹配Uri:

A.首先注册正确匹配的uri

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


3.ContentUris类介绍:

ContentUris类用于操作Uri路径后面的ID部分,它有两个比较实用的方法:withAppendedId(uri, id)用于为路径加上ID部分:

Uri resultUri = ContentUris.withAppendedId(uri, 10);
parseId(uri)方法用于从路径中获取ID部分:

long personid = ContentUris.parseId(uri);


4.ContentProvider类主要方法的作用:

public boolean onCreate():该方法在ContentProvider创建后就会被调用,Android开机后,ContentProvider在其它应用第一次访问它时才会被创建。

public Uri insert(Uri uri, ContentValues values):该方法用于供外部应用往ContentProvider添加数据。

public int delete(Uri uri, String selection, String[] selectionArgs):该方法用于供外部应用从ContentProvider删除数据。

public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs):该方法用于供外部应用更新ContentProvider中的数据。

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder):该方法用于供外部应用从ContentProvider中获取数据。

public String getType(Uri uri):该方法用于返回当前Url所代表数据的MIME类型。补充:如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头,否则"vnd.android.cursor.dir/person"


别忘了在配置文件中注册provider


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值