Content provider,为其它应用程序(也可以是提供该Content provider的应用程序)
提供了一个接口一致数据储存模型。通过该接口,你可以方便地提取你想要的数据,
修改或者是删除都会变得相当方便。依照 ANDROI组件模型的原理,把数据储存与数据显示分离天来,
这不但提高了组件重用性,也同时提供更高的完全性(每一个Content Provider都有自己的许可属性)。
作为数据储存的后端,你可以使用有Sqlite3保存数据,也可以使用文件系统保存,甚至是使用网络;
后端的多样 性给得程序的设计更富有弹性。
每一个实现都在从ContentProvider类继承,并实现ContentProvider的抽象函数:
delete(), insert(), query(), update(), getType()和onCreate().
代码片断:
class myContentProvider extends ContentProvider {
//删除符合指定条件的记录
public int delete(Uri uri, String selection, String[] selectionArgs);
//插入一个新的记录
public Uri insert(Uri uri, ContentValues values);
// 查询符合指定条件的记录
public Cursor query(Uri uri, String[] projecttion, String selection, String[] selectionArgs, String sortOrder);
//更新条例指定条件的记录
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
//基于给定uri,返回该uri表示的类型
public String getType(Uri uri);
//创建数据储存后端,如数据库,文件,网络接口等
public boolean onCreate();
......
}
如果使用Sqlite3作为数据后端(本例只讨论这种情况,如使用其它方法,如文件系统,网络,则大同小异),数据库的创建,
打开,更新,可以使用帮助类SQLiteHelper来完成,该类将对数据库的操作作了有效的封装,有利于我们使用。
代码片断:
1.class youtDbHelper extends SQLiteHelper {
2. // 创建数据库
3. public void onCreate(SQLiteDatabase db);
4. // 更新数据库
5. public void onUpdate(SQLiteDatabase db, int oldVersion, int newVersion)
6.
7. ......
8.}
为方便其它应用程序与该ContentProvider通信,通常我们要提供一个公共的Uri: CONTENT_URI,其它组件正是通过这一Uri,
与ContentProvider交流。在我们的ContentProvider创建好之后,我们不直接与之打交道,而是通过ANDROID的
ContentResolver进行操作。通过ANDROID系统的自动分析,会选择一个合适的ContentProvider进行通信。只要我们指定
我们之前定义的CONTENT_URI,就可能与之勾通了。
代码片断:
1.Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
2. //或者
3. Cursor cursor = manageQuery(uri, null, null, null, null);
4. // 可以使用游标cursor获取想要的信息
5. ...
6. // 删除
7. int count = getContentResolver().delete(Uri url, String where, String[] selectionArgs);
8. ......
对Uri的说明:
Uri(unified Resource identifier)就是统一资源标识,指定了一个特定的资源,遵照RFC2396规范。
一般格式为:
<scheme>://<authority><path><query>#<fragment>
例如:
content://your.contentprovider/what_u_provided
其中scheme=content 表示专为ContentProvider使用。
分享到:
相关推荐
Android Content Provider Demo
Android Content Provider用法样例,解析如何使用“内容提供商”Content Provider共享不同应用的数据,本Android例子将使用Content Provider实现了获取联系人信息,里面的注释非常丰富,是学习android的好资料。
博文《android基础知识05:四大组件之content provider》的示例程序,实现了content provider 的基本功能。
android content provider两个程序共享数据实例demo。简单的两个应用app之间共享数据。 getContentResolver().insert() getContentResolver().query() getContentResolver().delete() getContentResolver().update()
Android:Content Provider的使用。 1、Content Provider 简介 2、使用现成的Content Provider 3、定义自己的Content Provider 一、Content Provider 简介 我们说Android应用程序的四个核心组件是:Activity、...
NULL 博文链接:https://ouyangfeng521.iteye.com/blog/1059449
content provider实现数据共享demo(内有两个项目)
主要为大家详细解析了Android组件content provider的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本篇文章小编为大家介绍,Android Content Provider的使用。需要的朋友参考下
android-simple-content-provider-app 简单的Android Content Provider使用示例
理解Content Uri的概念和作用,掌握通过Content Provider访问联系人的方法,掌握通过Content Provider访问通话记录的方法,掌握通过Content Provider访问短信的方法。
android content provider学习过程中的笔记,希望对大家有帮助。
1、什么是内容提供者 2、怎样创建内容提供者 3、通过内容提供者完成CRUD操作 4、访问内容提供者 5、监听内容提供者数据变化 6、两个案例:监听短信以及操作联系人 最最重要的是包含了源码
简单的库,可帮助您使用注释从您的Class文件创建Android Content Provider。 如何添加到您的项目 Gradle: dependencies { compile ' mbanje.kurt:droidprovider:1.2.1 ' } 用法 检查演示应用程序。
NULL 博文链接:https://dampce032.iteye.com/blog/975663
关于Content Providers Content Providers 是所有应用程序之间数据存储和检索的一个桥梁,作用是使得各个...把18.SQLite和22.22.Content Provider添加到项目中,先运行18.SQLite,然后在进行22.Content Provider测试
Android中使用Content Provider组件访问通讯录中的联系人和添加联系人案例详解!
NULL 博文链接:https://byandby.iteye.com/blog/837466
RealmTodo 具有RealmDB的Android内容提供程序 RealmDB是一个有趣的快速noSQL数据库。 它可以轻松地与Android本机组件集成。 您唯一需要做的就是重写CP CRUD方法。 作为对的挑战而创建