ContentProvider(内容提供者)是Android中的四大组件之一。主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。
android中对数据操作包含有:
file, sqlite3, Preferences, ContectResolver与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"。
第三部分是路径名,用来表示将要操作的数据。可以看作网址中细分的内容路径。
---------------------------------
相关推荐
ContentProvider和Uri是Android系统中两个非常重要的概念,它们主要用于数据的共享和访问。在Android平台上,ContentProvider是一种机制,允许应用程序之间安全地共享数据,而Uri(Uniform Resource Identifier)则...
### Android学习笔记知识点详解 #### 一、Android简介与历史 - **定义**: Android是由Google公司主导开发的一款基于Linux内核的操作系统,主要用于移动设备,如智能手机和平板电脑。 - **发展历史**: Android项目...
【Android培训笔记详解】 在移动应用开发领域,Android操作系统占据着重要的地位,为开发者提供了丰富的API和工具。这篇“黑马Android培训笔记”是专为学习Android编程设计的,旨在帮助初学者快速掌握Android开发的...
【Android Studio开发笔记APP详解】 Android Studio是Google官方推荐的Android应用开发集成开发环境(IDE),它提供了丰富的功能,使得Android应用开发变得更加高效和便捷。本教程将基于Android Studio,详细解析一...
它包含了各种库、工具、文档和示例代码,帮助开发者理解和学习如何在Android平台上进行编程。"NotePad"是Android SDK中一个经典的示例应用,主要用于教授基本的数据库操作、UI设计以及活动(Activity)管理等Android...
文件“新版Android开发教程&笔记四--Dalvik ADB.pdf”可能涉及了Dalvik虚拟机的深入解析。Dalvik是Android早期版本使用的运行时环境,虽然现代Android系统已转向ART,但理解Dalvik的原理,如字节码(Dex文件)、垃圾...
【安卓学习笔记详解】 在安卓开发的学习过程中,了解并掌握基本概念和技术是非常关键的。以下是一些核心知识点的详述: 1. **字符集与编码**:Android系统默认使用UTF-8编码,而不是iso-8859-1。当你使用`getBytes...
【Android项目源码详解——构建简易笔记应用】 在Android开发中,创建一个简易的笔记应用是初学者常常会遇到的任务,也是进阶开发者巩固基础知识的良好实践。本项目源码提供了这样一个平台,帮助开发者理解Android...
- Android应用生命周期:详解各个Activity状态和生命周期方法,如onCreate(), onStart(), onResume(), onPause(), onStop()和onDestroy(),以及如何妥善处理应用的暂停和恢复。 - 资源管理:学习如何使用Android...
【Android Studio制作记事本应用详解】 Android Studio是Google推出的一款强大的集成开发环境,专为Android应用程序开发设计。在这个大作业中,我们看到的是一个基于Android Studio开发的简单记事本应用,它允许...
Android开发教程及笔记详解 Android开发是移动应用领域的重要组成部分,尤其在智能手机和平板电脑市场占据主导地位。这篇教程和笔记旨在帮助开发者深入理解Android平台,掌握必要的技能以创建高效、用户友好的应用...
### 安卓学习笔记知识点详解 #### 一、Android 基础概念 - **Activity**: Activity 是 Android 应用程序中的四大组件之一,代表一个屏幕界面,是用户与应用程序交互的主要方式。每个 Activity 都负责显示一个独立...
本笔记集合了"Mars Android视频教程"的主要知识点,旨在帮助学习者回顾和巩固课程中的核心概念。以下是根据文件名整理出的各章节内容详解: 1. **Animations.doc** - 动画是Android应用中提升用户体验的关键元素。...
安卓笔记是有关安卓操作系统和编程的详细学习资料,其中不仅包含了安卓应用开发的实践技巧,还涉及了Java SE的高级知识,如Java的反射机制和并发编程等。这些笔记对于安卓开发者来说非常有价值,是经过两年的时间...
【标题解析】: "android应用源码仿小米便签.zip" 这个标题表明这是一个关于Android应用程序的源代码,该程序模仿了...通过学习和分析这份源代码,开发者可以深入理解Android应用开发的各个方面,提高自己的编程技能。
《手机阅读“宝”——Apabi Reader for Android详解》 Apabi Reader for Android是一款专为Android设备设计的电子书阅读软件,它集成了强大的阅读功能和丰富的资源库,让用户随时随地享受阅读的乐趣。作为一款源码...