ContentProvider内容提供者-Android

Posted hequnwang10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContentProvider内容提供者-Android相关的知识,希望对你有一定的参考价值。

ContentProvider 应用程序间非常通用的共享数据的一种方式,也是 android 官方推荐的方式。

  1. 封装。对数据进行封装,提供统一的接口,使用者完全不必关心这些数据是在 DB ,XML 、Preferences 或者网络请求来的。当项目需求要改变数据来源时,使用我们的地方完全不需要修改。
  2. 提供一种跨进程数据共享的方式。
  3. 应用程序间的数据共享还有数据更新通知机制。因为数据是在多个应用程序中共享的,当其中一个应用程序改变了这些共享数据的时候,它有责任通知其它应用程序,让它们知道共享数据被修改了,这样它们就可以作相应的处理。

一、实现数据共享

ContentProvider 是应用程序之间共享数据的接口。

  1. 使用的时候首先自定义 一个类继承 ContentProvider , 然后覆写 query 、insert 、update 、delete 等 方法。
  2. 在 AndroidManifest 文件中进行注册
  3. 把自己的数据通过 uri 的形式共享出去 android 系统下 不同程序 数据默认是不能共享访问 需要去实现一个类去继承 ContentProvider。

1、Uri 介绍

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

以上是关于ContentProvider内容提供者-Android的主要内容,如果未能解决你的问题,请参考以下文章

每天进步一点----- 内容提供者ContentProvider

内容提供者ContentProvider和内容解析者ContentResolver

内容提供者ContentProvider和内容解析者ContentResolver

Android组件系列----ContentProvider内容提供者

Android面试四大组件之内容提供者ContentProvider

Android四大组件之一:ContentProvider(内容提供者)