学习笔记| AS入门(八) 组件篇之ContentProvider

本文介绍了Android中四大组件之一的ContentProvider,主要讲解了ContentProvider的概念、如何通过系统提供的Provider访问数据、内容URI的组成、ContentResolver的使用以及如何创建自定义的Provider。通过实例展示了如何读取联系人电话,并提供了为SQLite数据库创建自定义Provider的步骤。
摘要由CSDN通过智能技术生成
终于又回到组件篇,Android中非常重要的四大组件–Activity、ContentProvider、BroadcastReceiver和Service,它们分工明确,共同构成了可重用、灵活、低耦合的安卓系统。通过之前的学习,我们知道Activity主要负责UI加载和页面跳转,接下来几篇就依次介绍后三种组件,本篇先学习ContentProvider,目录见下:
  • ContentProvider概要
  • 从系统提供的Provider访问数据
    • 内容URI的组成
    • ContentResolve类
    • 例子:读取联系人的电话
  • 创建自己的Provider
    • UriMater类
    • 自定义一个Provider的步骤
    • 例子:为student.db创建MyProvider

1.ContentProvider概要

ContentProvider也有存储数据的功能,但与上一篇中学习的那三种数据存储方法不同的是,后者保存下的数据只能被该应用程序使用,而前者可以让不同应用程序之间进行数据共享,它还可以选择只对哪一部分数据进行共享,从而保证程序中的隐私数据不会有泄漏风险。所以组件ContentProvider主要负责存储和共享数据。

ContentProvider有两种形式:可以使用现有的内容提供者来读取和操作相应程序中的数据,也可以创建自己的内容提供者给这个程序的数据提供外部访问接口。下面分别学习一下。

2.从系统提供的Provider访问数据

既然ContentProvider有对外共享数据的功能,换句话说,其他应用程序可以通过ContentProvider对应用中的数据进行增删改查,说到这里是否感到熟悉?上篇学习SQLite数据存储的时候就提到过可以实现增删改查的各种辅助性方法,实际上ContentProvider是对SQLiteOpenHelper的进一步封装,因此它们使用的方法太像了,只不过不再用单纯的表名指明被操作的表,毕竟现在是其他程序访问它,而是用有一定格式规范的内容URI来代替。下面先来学习URI的组成。

(1)内容URI的组成

以上篇最后做的关于数据库的demo为例,它的包名是com.example.myapplication,如果其他程序想访问该程序student.db中的student表,那么需要的内容URI如图所示:

可以看出内容 URI 可以非常清楚地表达出我们想要访问哪个程序中哪张表里的数据,但还没完,还需要将它解析成 Uri 对象才可以作为参数传入。通过调用 Uri.parse()方法,就可以将内容 URI 字符串解析成 Uri 对象了,代码如下:

(2)ContentResolve类

现在有了酷似“表名”的Uri,类似的,在ContentResolver类中提供的一系列用于对数据进行增删改查操作的方法也酷似SQLiteDatabase的那些辅助性方法:insert()方法用于添加数据,update()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值