Android四大组件之——ContentProvider(二)

Content Resolver介绍:

开发者文档中这么定义的:

This class provides applications access to the content model.

这个类为应用提供访问Content模型的功能。

Content Resolver是我们应用里单一全局实例,为我们访问我们自己的应用或其他应用的Content Provider。就如同名字所描述的:Content Resolver接收来自客户的请求,然后解决它们的请求,通过将请求指向特定主机名的Content Provider解决。

Content Resolver包括了CRUD方法(create,read,update,delete)。这些正好与Content Provider中的抽象方法

(insert ,query,update,delete)一 一对应。

(图转自http://www.cnblogs.com/plokmju/p/android_ContentProvider.html)

Content Resolver不知道Content Provider是怎样对数据操作的,也不需要知道。Content Resolver的每个方法通过传递

URI到特定的Content Provider来实现对数据产生影响的操作。

下面我将通过一个Content Resolver的Demo实现对Android系统的User Dictionary进行增删改查操作。

增加(insert):

//调用getContentResolver()获取ContentResolver对象
ContentResolver contentResolver = getContentResolver;
ContentValues values = new ContentValues();
values.put(Words.WORD,"NewWord");     

//调用ContentResolver.insert(Uri url, ContentValues values)方法增加数据
contentResolver.insert(UserDictionary.Words.CONTENT_URI, values);

删除(delete):

//调用ContentResolver.delete(Uri url, String where, String[] selectionArgs)
//方法删除数据,返回的是删除的行数
long deleted = cr.delete(Words.CONTENT_URI,Words.WORD + "= ?", new String[]{"NewWord"});

查找(query):

String [] projection = new String[]{
                BaseColumns._ID,
                UserDictionary.Words.WORD
        };
Cursor cursor =cr
                .query(UserDictionary.Words.CONTENT_URI,
                        projection,
                        null,
                        null,
                        null);
 if(cursor.moveToFirst()){
            do{
                long id = cursor.getLong(0);
                String word= cursor.getString(1);
                Map<String,Object>map = new HashMap<String,Object>();

                map.put("id", id);
                map.put("word", word);
                list.add(map);
            }while(cursor.moveToNext());

修改(update):

//调用ContentResolver.update(Uri uri, ContentValues values, String where, //String[] selectionArgs)方法更新数据
//返回更新行数的个数
long update = cr.update(uri, values, null, null);

应用截图:                                                                                       用户字典截图:

                        

本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。

欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai

时间: 2024-08-08 13:56:09

Android四大组件之——ContentProvider(二)的相关文章

深入理解Android四大组件之一ContentProvider

ContentProvider作为Android四大组件之一,平时写自己的ContentProvider比较少,但是用到ContentProvider地方还是有的,比如去获取通讯录信息,这其实就间接的使用到了通讯录程序的ContentProvider组件. 先简单说一下ContentProvider组件.后面重点分析源码了解ContentProvider运行的过程. ContentProvider可以实现在应用程序之间共享数据. Android为常见的一些数据提供了默认的ContentProvi

Android 四大组件 (四) ContentProvider介绍

ContentProvider虽然与Activity.Service.BroadcastReceiver齐名为Android四大组件.如果你不是特别开发一款与其他APP有数据交互的应用,它的使用频率远没有另外三者高.因为已经介绍了前三大组件,为了完善Android四大组件介绍了解,这次补充下ContentProvider介绍.哈哈~一边在看世界杯,巴西打瑞士.目前巴西1:0.我把所有金币全压巴西了~题外话说完,下面简单介绍下ContentProvider. 一.  ContentProvider

【Android的从零单排开发日记】——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

【Android的从零单排开发日记】之入门篇(九)——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

android四大组件之ContentProvider(一)

ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之前共享数据的一种机制,而我们知道每一个应用程序都是运行在不同的应用程序的,数据和文件在不同应用程序之间达到数据的共享不是没有可能,而是显得比较复杂,而正好Android中的ContentProvider则达到了这一需求,比如有时候我们需要操作手机里的联系人,手机里的多媒体等一些信息,我们都可以用到这个ContentProvider来达到我们所需. (1)

Android四大组件之ContentProvider

内容提供者 应用的数据库是不允许其他应用访问的,内容提供者的作用就是把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. 我们可以通过自定义内容提供者来了解内容提供者的原理 自定义内容提供者步骤: 第一步:我们想写一个myOpenHelper继承SQLiteOpenHelper,来创建一个数据库 第二步 :写myContentProviderjava类继承ContentProvider的内容提供者类,重写增删改查的方法. 内容提供者需要在清单文件中注册 具体代码: //内容提供者

四大组件之ContentProvider(二)-轻轻松松自定义ContentProvider

第3节 自定义ContentProvider 自定义一个ContentProvider,需要 继承ContentProvider类重新创建一个类,并实现其中的一些方法: 在应用的AndroidManifest.xml文件中,声明这个新添加的组件: 但在这之前,我们要来设计一下外部访问它采用的地址. 3.1 地址设计 Uri的scheme字段是固定的,使用content:. authority定义成程序的包名com.anddle.mycontentprovider. path就像是网站内部的分类,

Android笔记(五十六) Android四大组件之一——ContentProvider,实现自己的ContentProvider

有时候我们自己的程序也需要向外接提供数据,那么就需要我们自己实现ContentProvider. 自己实现ContentProvider的话需要新建一个类去继承ContentProvider,然后重写类中的的6个抽象方法. onCreate():初始化内容提供器时候会调用,通常会在这里完成对数据库的创建和升级等操作,返回true表示内容提供器初始化成功,返回false则表示失败,注意,只有当存在ContentResolver尝试访问我们程序中的数据时,内容提供其才会被初始化 query():从内

Android笔记(五十四) Android四大组件之一——ContentProvider(一)

ContentProvider提供数据 在Android中,他的每个应用都是相互独立的,各自运行在自己的Dalvik虚拟机中,但现实使用中常常需要在多个应用之间进行数据交换,例如发短信需要获取联系人中的内容,QQ上传头像需要获取相册内容等等,Android为这种跨应用的数据交换提供了一个标准ContentProvider,用户实现自己的ContentProvider时,需要实现他规定的抽象方法: public boolean onCreate():该方法在ContentProvider创建后会被