原文地址:http://1622511.blog.51cto.com/1612511/567337
在Android中的程序与程序之间数据都是私有的,即在程序A中创建的数据库或者文件只能由A自身使用,其他程序无法直接使用A中创建的数据库信息和文件信息,这样保证了程序与程序之间的独立性和数据安全。但是这样会导致在需要使用同样的数据时候数据重复声明和重复创建,产生了数据的冗余。
那么我们如何能够更好的使得不同程序之间数据的独立,而又可以在需要共享数据的时候能够有共同操作数据的桥梁呢?为了解决这个问题,Android设计了一种称为内容提供器的技术,从而为内容共享提供了支持,这就是Android的重要组件ContentProvider。我们举个例子,如果没有内容提供器,那么我们如果在需要得到手机上面的某个联系人信息就不可能得到,因此ContentProvider的作用就在于此。
ContentProvider是个什么样的东西?概况的说,ContentProvider就是为其他程序提供一个对数据访问的接口,从而可以实现对数据进行访问和更新的操作。要实现ContentProvider,需要继承ContentProvider父类并覆盖其抽象方法,这些方法即是访问和更新数据的方法。
1、删除符合指定条件的记录
public int delete(Uri uri, String selection, String[] selectionArgs);
2、插入一个新的记录
public Uri insert(Uri uri, ContentValues values);
3、查询符合指定条件的记录
public Cursor query(Uri uri, String[] projecttion, String selection, String[] selectionArgs, String sortOrder);
4、更新条例指定条件的记录
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
5、基于给定uri,返回该uri表示的类型
public String getType(Uri uri);
6、创建数据储存后端,如数据库,文件,网络接口等,这里主要进行初始化工作
public boolean onCreate();
由以上方法即可以完成ContentProvider的创建,完成了数据存储的连接以及各种数据操作,有关数据存储类型可以有数据库、文件甚至是网络存储。
那么,在其他程序中如何使用以上定义的ContentProvider呢?
首先,需要在AndroidManifest.xml中声明以上定义的ContentProvider。
<provider android:name="MProvider" android:authorities="ataaw.MProvider" />
在程序中使用ContentProvider是通过ContentResolver来操作,同样地,ContentResolver中也具有ContentProvider中同样名称的方法,这好对于ContentProvider中的各个操作方法,因此操作的结果就是回调ContentProvider中定义的各个方法。
ContentResolver.insert(Uri uri, ContentValues values);//插入数据
ContentResolver.delete (Uri url, String where, String[] selectionArgs);//删除数据
ContentResolver.update(Uri uri, ContentValues values, String where, String[] selectionArgs);//更新数据
这里涉及到一个叫Uri的内容,这便是程序提供给外界程序的接口地址,一般情况下,接口地址定义如下(包括包名、provider和记录ID):
进一步学习可参考:http://www.cnblogs.com/linjiqin/archive/2011/05/28/2061396.html
分享到:
相关推荐
3. 更新数据:通过ContentResolver调用update()方法,传入URI、ContentValues更新内容和选择器,ContentProvider更新对应数据并返回受影响的行数。 4. 删除数据:通过ContentResolver调用delete()方法,传入URI和...
4. **内容解析器Cursor**:Cursor是ContentProvider返回数据的接口,它提供了遍历和访问数据的方法,如`moveToFirst()`、`getColumnIndex()`、`getString()`等。 5. **权限控制**:通过在AndroidManifest.xml中设置...
在这个“ContentProvider 内容提供者完整代码”压缩包中,我们可以深入理解ContentProvider的工作原理以及如何实现它。 首先,我们来详细解释ContentProvider的基本概念。ContentProvider是一个抽象类,需要我们...
### Android入门:数据库支持(SQLite)与内容提供器(ContentProvider) #### 一、SQLite数据库支持 **1.1 概述** 在Android开发过程中,SQLite是应用最为广泛的轻量级数据库解决方案之一。它是一个内嵌式的数据库,...
8. **CPOther可能涉及的内容**:如果"ContentProvider"文件夹下有一个名为"CPOther"的子文件,它可能包含了一些与ContentProvider相关的辅助类或工具方法,比如自定义的数据库操作类、数据转换工具等,这些辅助类...
ContentProvider使得一个应用的数据可以被其他应用访问,同时也为数据提供了统一的接口。本篇文章将深入探讨ContentProvider的工作原理、使用方法及其在实际开发中的应用。 一、ContentProvider基本概念 1. **内容...
这篇内容将深入解析ContentProvider的工作原理以及如何创建和使用它。 首先,ContentProvider通过定义一个标准的接口,让数据访问变得规范。它提供了一套标准的CRUD(Create、Read、Update、Delete)操作,使得应用...
总结起来,Android的内容提供者ContentProvider是实现应用间数据共享的重要工具。通过创建和注册ContentProvider,开发者可以将自己的数据暴露给其他应用,同时也可以访问其他应用公开的数据。通过ContentObserver,...
这篇教程将深入解析ContentProvider的工作原理及其实际应用。 首先,ContentProvider是Android系统提供的一种机制,允许应用程序间的数据共享。它封装了对数据库、文件等数据源的操作,使得其他应用可以通过标准的...
本篇文章将全面解析Android ContentProvider的工作原理、实现过程以及应用场景。 一、ContentProvider概述 ContentProvider作为Android系统中的数据桥梁,它遵循统一的接口,使得应用程序间的数据交换变得标准化。...
"Android数据库ContentProvider封装原理" Android操作系统中的数据库管理是通过ContentProvider来实现的,而ContentProvider是一个抽象类,提供了标准化的接口来访问和管理应用程序的数据。ContentProvider可以提供...
通过ContentProvider,一个应用可以将自己的数据结构化,并以统一的方式对外提供。这使得其他应用可以通过标准的查询方法来访问这些数据,无需了解数据存储的具体细节。 二、ContentProvider结构 1. Uri:内容URI是...
本实战源码深入解析了ContentProvider的工作原理及其在实际项目中的应用,通过阅读源码,开发者可以更好地理解如何创建、注册以及使用ContentProvider。 ContentProvider是Android系统中提供数据共享的一种机制,它...
虽然在许多情况下,开发者可能并不需要自定义ContentProvider,但理解其工作原理和如何使用内置的ContentProvider对理解和优化应用功能至关重要。 ContentProvider主要职责是提供一个标准的接口,使得数据能够被...
本文将深入探讨这两个组件的工作原理、使用方法以及它们在实际开发中的应用。 首先,我们来理解ContentProvider。ContentProvider是Android四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider)...
首先,ContentProvider的核心功能是为其他应用程序提供一个统一的数据接口。它允许应用程序之间通过URI(统一资源标识符)来访问和操作数据,这些数据可以存储在SQLite数据库、文件系统或网络中。ContentProvider的...
本篇文章将深入探讨ContentProvider的工作原理、如何创建以及如何使用,旨在帮助开发者更好地理解和应用这一关键组件。 首先,我们要理解ContentProvider的基本概念。ContentProvider实质上是一个实现了标准接口的...
在Android应用开发中,ContentProvider是一种非常重要的组件,它提供了数据共享和跨应用程序数据访问的能力。本示例通过ContentProvider实现了对SQLite数据库的增删改查(CRUD)操作,展示了如何利用ContentProvider...
ContentProvider使得应用程序可以将自己的数据结构化,并提供给其他应用进行读写操作,类似于数据库的对外接口。下面我们将深入探讨ContentProvider的基本概念、工作原理以及如何在实际项目中使用。 一、...