ContentProvider内容提供者-Android
Posted hequnwang10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContentProvider内容提供者-Android相关的知识,希望对你有一定的参考价值。
ContentProvider 应用程序间非常通用的共享数据的一种方式,也是 android 官方推荐的方式。
- 封装。对数据进行封装,提供统一的接口,使用者完全不必关心这些数据是在 DB ,XML 、Preferences 或者网络请求来的。当项目需求要改变数据来源时,使用我们的地方完全不需要修改。
- 提供一种跨进程数据共享的方式。
- 应用程序间的数据共享还有数据更新通知机制。因为数据是在多个应用程序中共享的,当其中一个应用程序改变了这些共享数据的时候,它有责任通知其它应用程序,让它们知道共享数据被修改了,这样它们就可以作相应的处理。
一、实现数据共享
ContentProvider 是应用程序之间共享数据的接口。
- 使用的时候首先自定义 一个类继承 ContentProvider , 然后覆写 query 、insert 、update 、delete 等 方法。
- 在 AndroidManifest 文件中进行注册
- 把自己的数据通过 uri 的形式共享出去 android 系统下 不同程序 数据默认是不能共享访问 需要去实现一个类去继承 ContentProvider。
1、Uri 介绍
- 每一个 ContentProvider 都拥有一个公共的 URI ,这个 URI 用于表示这个 ContentProvider 所提供的数据。
- 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内容提供者