ContentProvider使用方法详解

是四大组件之一,其本质上是一个标准化的数据管道,它屏蔽了底层的数据管理和服务等细节,以标准化的方式在 应用间共享数据。用户可以灵活实现所封装的数据存储以及增删改查等,所有的 必须实现一个对外统一的接口。

本篇文章主要介绍 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

ContentProvider

获取联系人信息的方法

获取短信内容的方法

ContentResolver 内容解析者

ContentObserver 内容观察者

ContentProvider ContentResolver ContentObserver 三者关系

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。

我们不发送红包,我们只是红包的搬运工。

1. ContentProvider 实现ContentProvider 继承关系

四大组件之一,必须在Androidmainfest.xml 中注册

注意 : URI 中的元素

android:authorities="ProgramAndroid"

继承 ContentProvider 实现增删改查等方法

提供对外提供操作的数据库方法

其他APK 访问此ContentProvider 数据库的方法

注意 :

// 此条添加上才ContentObserver可以监听数据库改变

getContentResolver().notifyChange(Uri.parse(uri),null);

至此,自定义的使用方法已经实现。

2. 获取联系人信息的方法

系统自带一下 ,比如 联系人

例如: 源码 下的内容

Android 系统Provider.png

本段主要实现获取系统联系人(ContactProvider)提供的一些信息

获取联系人实现方法

ListView 显示布局如下

item 布局如下:

注意: 获取联系人需要权限

至此,已经可以获取并显示联系人信息。

3.获取短信内容的方法

短信内容数据也是系统提供的,获取方法如下:

获取方法如下

ListView 布局如下

item 布局如下:

4. ContentResolver 内容解析者

主要是通过调用获取 提供的数据接口,进而进行增删改查等操作。

5.ContentObserver 内容观察者

内容观察者通过指定 监听数据是否改变。

自定义 ContentObserver 内容观察者

1.注册ContentObserver 内容观察者 registerContentObserver

2.继承 ContentObserver 实现 onChange方法

注意 :

// 此条添加上才ContentObserver可以监听数据库改变

getContentResolver().notifyChange(Uri.parse(uri),null);

至此自定义内容观察者已经实现完成

调用ContentObserver 监听短信数据改变

6. ContentProvider ContentResolver ContentObserver 三者关系

三者关系图如下

关系图.png

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。期待您的关注,

感谢您的阅读,谢谢!

本文来自企鹅号 - 程序员Android媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

LVS的Full-NAT模式

42140
来自专栏散尽浮华

Saltstack自动化操作记录(1)-环境部署

早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用。 Saltstack知多少 Saltstack是一种全新的...

274100
来自专栏FreeBuf

XSS的原理分析与解剖:第三章(技巧篇)

作者 Black-Hole 0×01 前言: 关于前两节url: 第一章:http://www.freebuf.com/articles/web/40520....

21070
来自专栏信安之路

RedTeam 技巧集合

1、利用目标用户使用的 user agent 来隐藏自身的恶意流量,比如像 Outlook 软件的 UA。

16020
来自专栏前端儿

【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 "多人聊天室"

19820
来自专栏码洞

如何优雅的关闭Go Channel【译】

不要在消费端关闭channel,不要在有多个并行的生产者时对channel执行关闭操作。

28240
来自专栏编程微刊

前端实时消息提示的效果-websocket长轮询

16350
来自专栏逸鹏说道

NET跨平台:在Ubuntu下搭建ASP.NET 5开发环境

0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了。最近工作上有个小功能要做成Web应...

31830
来自专栏张伟博客

小米路由器mini折腾之刷不死uboot篇

70150
来自专栏菩提树下的杨过

老生常谈:利用Membership实现SSO(单点登录)

虽然有一些现成的第三方解决方案比如:OpenID,Passport,SpaceCard等都还不错,但是要么就是收费的(passport),要么就是有点用不习惯(...

21750

扫码关注云+社区

领取腾讯云代金券