四大组件之ContentProvider

原创 2015年11月19日 17:28:50

Content Provider 详解

主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。

  android中对数据操作包含有:

  file, sqlite3,SharedPreferences , ContentResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序不能通过这三种方法去操作别的应用内的数据。

  android中提供ContectResolver与ContentProvider来操作别的应用程序的数据。

  使用方式:

  一个应用实现ContentProvider来提供内容给别的应用来操作,

  一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以。

  以下这段是Google Doc中对ContentProvider的大致概述:

  内容提供者将一些特定的应用程序数据供给其它应用程序使用。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个 ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。


1.ContentProvider

  Android提供了一些主要数据类型的ContentProvider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些Android提供的ContentProvider。通过获得这些ContentProvider可以查询它们包含的数据,当然前提是已获得适当的读取权限。

  主要方法:

  public boolean onCreate() 在创建ContentProvider时调用
  public Cursor query(Uri, String[], String, String[], String) 用于查询指定Uri的ContentProvider,返回一个Cursor

  public Uri insert(Uri, ContentValues) 用于添加数据到指定Uri的ContentProvider中

  public int update(Uri, ContentValues, String, String[]) 用于更新指定Uri的ContentProvider中的数据

  public int delete(Uri, String, String[]) 用于从指定Uri的ContentProvider中删除数据

  public String getType(Uri) 用于返回指定的Uri中的数据的MIME类型

  *如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头。

  例如:要得到所有person记录的Uri为content://contacts/person,那么返回的MIME类型字符串为"vnd.android.cursor.dir/person"。

  *如果要操作的数据属于非集合类型数据,那么MIME类型字符串应该以vnd.android.cursor.item/开头。

  例如:要得到id为10的person记录的Uri为content://contacts/person/10,那么返回的MIME类型字符串应为"vnd.android.cursor.item/person"。

2.ContentResolver

  当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver类来完成,要获取ContentResolver对象,可以使用Context提供的getContentResolver()方法。

  ContentResolver cr = getContentResolver();

  ContentResolver提供的方法和ContentProvider提供的方法对应的有以下几个方法。

  public Uri insert(Uri uri, ContentValues values) 用于添加数据到指定Uri的ContentProvider中。

  public int delete(Uri uri, String selection, String[] selectionArgs) 用于从指定Uri的ContentProvider中删除数据。

  public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) 用于更新指定Uri的ContentProvider中的数据。

  public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 用于查询指定Uri的ContentProvider。



3.Uri

  Uri指定了将要操作的ContentProvider,其实可以把一个Uri看作是一个网址,我们把Uri分为三部分。

  第一部分是"content://"。可以看作是网址中的"http://"。

  第二部分是主机名或authority,用于唯一标识这个ContentProvider,外部应用需要根据这个标识来找到它。可以看作是网址中的主机名,比如"blog.csdn.net"。

  第三部分是路径名,用来表示将要操作的数据。可以看作网址中细分的内容路径。

1.jpg

Android四大组件ContentProvider

  • 2016年08月31日 20:37
  • 10.06MB
  • 下载

Android四大组件之ContentProvider(下)

(一)概述 学完上一节,相信你已经知道如何去使用系统提供的ContentProvider或者自定义ContentProvider了, 已经基本满足日常开发的需求了,有趣的是,我在官方文档上看到了另外...

android四大组件启动流程-ContentProvider启动流程(基于android 6.0)

前面已经介绍了Activity、Service、BroadcastReceiver的启动流程 Activity的启动流程:http://blog.csdn.net/newhope1106/artic...

Android四大组件——ContentProvider的增删改查和优化

ContentProvider对外提供数据库的增删改查 事先说明: ContentProvider步骤:创数据库,写规则匹配,配置manifests,另一个应用使用 其实ContentProvi...

Android学习-四大组件(ContentProvider)

今天继续复习内容提供者,ContentProvider可以实现不同程序之间的数据共享和数据操作。...
  • hamotim
  • hamotim
  • 2016年02月22日 20:53
  • 135

写给初学者19_android_四大组件_ContentProvider初级

安卓19_四大组件-ContentProvider这个组件其实要在你理解好安卓的数据储存方式以后,再来理解更好。安卓其他普通的数据储存方式几乎都只能用于处理自身的数据。比如Sqllite,但是一般我们...
  • Mofeel_
  • Mofeel_
  • 2017年04月20日 16:52
  • 349

Android 四大组件 (三) ContentProvider 使用简介

简单介绍ContentProvider跟ContentProvider的使用,对联系人的增删改查操作

Android四大组件——ContentProvider的用法.txt

ContentProvider简介: 在Android当中,每一个应用程序的数据都是采用私有的形式进行操作的,不管这些数据是文件保存还是数据库保存,都不能被外部应用程序所访问。 ...

Android四大组件之ContentProvider获取系统的联系人及联系人电话

下面是“手机管家”界面讲解及其中所用到技术的分享: 1先从欢迎界面开始,这里使用了2个动画效果(alpha透明度从0.7-1.0,translate位移动画,从y的0%-100%(-100%),具体...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:四大组件之ContentProvider
举报原因:
原因补充:

(最多只允许输入30个字)