当前位置:首页 > 网站运营杂谈 > 正文

ContentResolver怎么用?这篇教程一看就懂!

ContentResolver怎么用?这篇教程一看就懂!

今儿个,咱来说说这ContentResolver怎么用。我一开始也搞不明白,就是看到别人代码里经常出现这玩意儿,觉得挺神秘的。后来自己琢磨一下,发现这玩意儿还挺有意思的...

今儿个,咱来说说这ContentResolver怎么用。我一开始也搞不明白,就是看到别人代码里经常出现这玩意儿,觉得挺神秘的。后来自己琢磨一下,发现这玩意儿还挺有意思的。简单说,就是让不同的应用程序之间可以分享数据用的。你把数据放在那,我就能拿来用,挺方便的。

我是怎么开始的?一开始就想搞明白这个,我就先去查查资料,解一下大概怎么用的。然后我就照着资料里说的,先在自己的应用里头,通过Activity的getContentResovler()方法获得一个ContentResolver的实例。就像这样:

ContentResolver cr = *();

这就算拿到一个操作数据的工具。接下来就是想办法把数据放进去,或者是取出来。

先说说怎么放数据。我当时是想做一个简单的联系人应用,所以就想把一些联系人的信息存进去。我创建一个类,名字就叫什么MyContactProvider,让它继承自ContentProvider。这就相当于声明:“我这里有些数据,你们可以用ContentResolver来访问”。

ContentResolver怎么用?这篇教程一看就懂!

然后,我得弄个“匹配器”,这玩意儿就像个门卫,负责检查你要访问的数据是不是我这里有的。要是没有,那就不让你访问。我记得我用UriMatcher这个类,设置一些规则,比如什么样的Uri对应什么样的操作,增删改查都得安排

然后就是实现一些方法。ContentProvider里头有几个方法是必须要实现的,比如insert()、delete()、update()、query(),分别对应着数据的增删改查。我就在这些方法里写上具体的逻辑,比如怎么把数据存到数据库里,怎么从数据库里把数据取出来等等。这些操作,就跟平时操作数据库差不多,用SQLiteOpenHelper啥的就行。我当时照着一些例子,比葫芦画瓢也给写出来。

把数据放进去之后,怎么取出来?这里就用到ContentResolver。我又写一个简单的应用,在里头也用getContentResolver()拿到ContentResolver的实例。然后我就用它来查询数据。我当时是这样写的:

ContentResolver怎么用?这篇教程一看就懂!
  • 先定义一个Uri,这个Uri就像是数据的地址,告诉ContentResolver我要访问哪个数据。

  • 然后调用ContentResolver的query()方法,把Uri传进去,再指定一些查询条件,比如我要查所有姓张的联系人。

  • query()方法会返回一个Cursor,这玩意儿就像一个数据表,里头存着查询的结果。

  • 我就遍历这个Cursor,把里头的数据一条一条取出来,显示在界面上。

当时运行起来,还真就把数据给查出来,感觉还挺有成就感的。后来我又试试插入、删除、更新数据,也都成功。这下算是对ContentResolver有个初步的解。

总结一下

简单点说,就是先用getContentResolver()获得ContentResolver的实例,接着用ContentProvider声明一些数据。然后用UriMatcher做数据匹配。实现insert()、delete()、update()、query()这些方法。另一个应用就能通过ContentResolver访问这些数据。大概就这么个过程。这只是个简单的例子,实际使用中可能还会遇到各种各样的问题,那就需要具体问题具体分析。这玩意儿还是挺实用的,学会它,就能在不同的应用之间共享数据,还是挺方便的。

最新文章