分析Content Providers用法
前面我们在“Android应用程序剖析”中讨论过Android平台上四种存储数据的方法以及需要着重注意的特性。Content Providers是Android提供的一种让我们能够在不同应用间共享数据 的唯一的 通用化接口机制,通过对底层的数据源进行抽象,Content Providers 解除了应用程序层和数据层的耦合,这样应用程序可以轻便的在不同数据源之上切换(和DAO的理想相当一致),Content Providers使用 权限控制,通过URI模式访问,读写双向,由此,任何具有对应permissions(许可、权限)的应用程序都可以增删查改 由另一个程序创建的数据---包括一些本地化Android数据库(也就是说你的程序可以访问通讯录,浏览器历史等),同样,你可以把你自己的数据源发布成Content Providers,这样其他开发者就可以和你所开发的应用中的数据进行交互,甚至扩展。
为什么需要Content Provider?
因为在Android平台上文件都是应用程序私有的,也就是应用程序只能访问自己的文件,如果是属于其它应用程序的文件,一般式无法直接访问的。如果需要共享数据,那么我们就需要content provider,简单的说就是用content provider把数据包装后供授权的Application访问。
什么是Content Provider?
Content Provider实际上是一个类,这个类将它要共享的数据进行包装,提供了一组供其它应用程序调用的接口方法,这些方法可以让应用程序存储和提取被包装的数据。
创建Content Providers 步骤有哪些?
继承ContentProvider,重写onCreate,update,query,insert,delete,getType回调方法,当应用程序用ContentResolver.insert()等操作时,此处的函数被调用定义public static final Uri CONTENT_URI属性,此变量代表你的ContentProvider能够处理的 URI,必须是唯一的,(实际是引用AndroidManifest.xml中的定义),
构建数据存储系统,我们可以使用文件存储或是SQLite数据库,或其他
针对SQLite3,我们的步骤如下:
1、定义内部类继承SQLiteOpenHelper,并重写onCreate(SQLiteDatabase db)和 onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)方法.
2、对于query(),我们在其内部依赖Cursor SQLiteQueryBuilder.Query()发送查询,对于其他insert,update,delete我们直接借助SQLiteDatabase.insert等完成
3、在Content Provider的onCreate()中,我们做如下初始化
1 Context context = getContext();
2
3 DatabaseHelper dbHelper;
4
5 dbHelper = new DatabaseHelper(context, DATABASE_NAME, null,DATABASE_VERSION);
6
7 DB = dbHelper.getWritableDatabase();
8
9 return (DB == null) ? false : true;
定义我们的查询时所会用到的列名,一般我们会把数据库中表的所有列名都定义成常量,方便查询时Cursor提取值。
// Column Names 表中列名
public static final String KEY_ID = "_id";
public static final String KEY_DATE = "date";
public static final String KEY_DETAILS = "details";
public static final String KEY_LOCATION_LAT = "latitude";
URI数据请求来了,作为Content Provider的开发者你需要告诉Conent Provider怎么判断URI想要哪种数据,这里需借助UriMatcher。
private static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
.......
}
分享到:
相关推荐
本文将深入探讨Content Providers的功能,并通过实例演示如何使用它们。 Content Providers作为Android四大组件之一(Activity、Service、Broadcast Receiver、Content Provider),主要负责存储和检索结构化数据,...
ContentProviders使用URI(统一资源标识符)来识别数据集,并允许一个应用程序存储和检索数据,并且让数据对其他应用程序可见。所有的ContentProviders都有一个公有的URI,这个URI以字符串“content://”开头。URI的...
本说明文档将深入探讨Content Provider的概念、工作原理、使用方法以及它在实际开发中的应用。 一、Content Provider概述 Content Provider是Android提供的一种机制,使得应用程序能够将自己的数据公开给其他应用...
通过分析和学习这份源码,开发者将能更好地理解和利用Content Providers来构建高效、安全的数据驱动的Android应用。实践中,可以尝试修改源码,添加新的数据操作或优化现有功能,以加深对Content Providers的理解。...
本压缩包“应用源码之30.Content_Providers(2).zip”很可能是为了深入解析Content Provider的工作原理和使用方法,通过实际的源码示例来帮助开发者提升技能。 Content Providers的核心职责在于管理应用程序的数据...
本资料包“Android应用源码之29.Content_Providers(1).zip”显然是为了帮助开发者理解和实践Content Provider的用法。以下是关于Content Providers的详细知识: 1. **Content Providers基础** - **定义**:Content...
本资料主要探讨了Content Providers的基础知识和使用方法,适用于对Android源码感兴趣的开发者进行深入学习。 Content Providers是Android系统中用于存储和检索数据的核心组件,它可以为其他应用程序提供统一的数据...
9. **案例分析**:在提供的源码中,"Android应用源码之30.Content_Providers(2)"可能包含了一个或多个示例,演示了如何创建和使用Content Provider。通过分析这些示例,你可以深入了解Content Provider的工作原理,...
2. **Provider类**:这是Content Providers的核心,需要继承自`android.content.ContentProvider`类,并重写必要的方法,如`query()`, `insert()`, `update()`, `delete()`和`getType()`等。 3. **Contract类**:...
"Android-实用程序来创建ContentProviders没有样板和重型定制选项"项目旨在解决这一问题,提供了一种简化ContentProvider创建的方法。这个项目可能包含一个库或者框架,它通过自动化的代码生成或抽象化处理,减少了...
easy-content-providers, 在与定制内容提供商的数据中,轻松集成 Android 内容提供程序轻松集成内置的android和自定义内容提供程序数据。 它甚至还附带了一个示例应用程序和用于调试目的的Stetho扩展。 为什么以及...
### Content Provider 在 Android 中的应用 #### 一、概述 Content Provider 是 Android 四大组件之一,主要用于实现跨应用之间...通过本文的学习,相信初学者已经能够理解 Content Provider 的基本原理及使用方法。
【标题】MSM101_1_3_ContentProviders 是一个关于Android开发中ContentProvider的教程,它深入探讨了如何在Android应用间共享数据。ContentProvider是Android四大组件之一,负责提供应用程序之间的数据访问接口。 ...
本项目“Contacts_content_providers”显然旨在演示如何利用内容提供者来管理联系人数据,这通常涉及到读取、写入以及更新系统中的联系人信息。下面将详细介绍这个项目可能涵盖的知识点: 1. **内容提供者基础**: ...
ContentResolver提供了`query()`方法来获取联系人数据,`insert()`方法来新增联系人,`update()`方法来更新联系人信息,以及`delete()`方法来删除联系人。 5. **同步适配器**: 联系人数据提供者还与Android的同步...
SimpleProvider ...用法 SimpleProvider使用类和字段上的注释来定义数据库结构。 其他所有内容(数据库和表创建,URI匹配,CRUD操作)都由抽象类AbstractProvider处理。 编写自己的提供程序 要编写自己的Con
`adb-export`是一个开源项目,它提供了一个方便的方法,将Android设备上的Content Providers数据导出为CSV(Comma Separated Values)格式,这是一种广泛使用的表格数据文件格式,易于读取和处理。 首先,让我们...
通过查看这些代码,你可以了解每个数据存储方法的上下文用法,以及如何在实际项目中整合它们。这将帮助你更好地理解和运用这些技术。 总结: 这份"Android应用源码之24.数据存储(3)"的压缩包,提供了关于Android中...