`
微Smile
  • 浏览: 34881 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

Android 应用程序之间数据共享—ContentResolver与ContentProvider

 
阅读更多

Android是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限才可以。

如何将应用程序的数据暴露出去? Android提供了ContentProvider,一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。

如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。

当前篇主要说明,如何获取其它应用程序共享的数据,比如获取Android 手机电话薄中的信息。

什么是URI?

在学习如何获取ContentResolver前,有个名词是必须了解的:URI。URI是网络资源的定义,在Android中赋予其更广阔的含义,先看个例子,如下:
URI
将其分为A,B,C,D 4个部分:
A:标准前缀,用来说明一个Content Provider控制这些数据,无法改变的;
B:URI的标识,它定义了是哪个Content Provider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的   类名。这个标识在<provider> 元素的 authorities属性中说明:
<provider name=”.TransportationProvider”  authorities=”com.example.transportationprovider”  . . .  >
C:路径,Content Provider使用这些路径来确定当前需要生什么类型的数据,URI中可能不包括路径,也可能包括多个;
D:如果URI中包含,表示需要获取的记录的ID;如果没有ID,就表示返回全部;
由于URI通常比较长,而且有时候容易出错,切难以理解。所以,在Android当中定义了一些辅助类,并且定义了一些常量来代替这些长字符串,例如:People.CONTENT_URI

ContentResolver 介绍说明

看完这些介绍,大家一定就明白了,ContentResolver是通过URI来查询ContentProvider中提供的数据。除了URI以外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。如果你需要获取一个特定的记录,你就必须知道当前记录的ID,也就是URI中D部分。

前面也提到了Content providers是以类似数据库中表的方式将数据暴露出去,那么ContentResolver也将采用类似数据库的操作来从Content providers中获取数据。现在简要介绍ContentResolver的主要接口,如下:

返回值 函数声明
final Uri insert(Uri url, ContentValues values)Inserts a row into a table at the given URL.
final int delete(Uri url, String where, String[] selectionArgs)Deletes row(s) specified by a content URI.
final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)Query the given URI, returning a Cursor over the result set.
final int update(Uri uri, ContentValues values, String where, String[] selectionArgs)Update row(s) in a content URI.

看到这里,是否感觉与数据库的操作基本一样的?就是这样的,详细解析请参考Android SQLite解析篇中的说明,不在此详细说明。

最后一个问题:如何获取ContentResolver?调用getContentResolver (),例如:ContentResolver cr = getContentResolver();

分享到:
评论
1 楼 chaopi 2013-07-03  
我是murphy,为什么手机一直打通没人接?赶紧联系我

相关推荐

    Android应用程序之间数据共享ContentResolver.pdf

    Android 应用程序之间数据共享 ContentResolver Android 应用程序之间数据共享是一种非常重要的机制,它允许不同的应用程序之间共享数据,并且提供了一个标准的接口来访问和操作这些共享数据。ContentResolver 是 ...

    android程序间数据的共享(ContentProvider和ContentResolver的使用)

    在Android系统中,应用程序之间进行数据共享是一种常见的需求。为了实现这一目标,Android提供了一种安全、标准化的方式,即通过ContentProvider和ContentResolver组件。本文将深入探讨这两个组件的工作原理及其在...

    Android应用程序之间数据共享—ContentResolver(1)[定义].pdf

    通过上述内容,我们可以看到,Android系统通过ContentResolver和ContentProvider提供了一种高效且安全的方式来在不同应用程序之间共享数据。开发者可以借助这些组件,实现对数据的访问和操作,而无需担心底层存储...

    Android开发ContentResolver与ContentProvider的使用

    总的来说,ContentResolver和ContentProvider是Android数据共享的关键机制,它们使得数据能在不同的应用程序之间安全、有效地流通,极大地扩展了Android应用的可扩展性和互操作性。理解并熟练掌握这两者的使用,对于...

    ContentProvider数据共享

    在Android系统中,ContentProvider是实现应用程序间数据共享的核心组件。它允许一个应用将自己的数据集公开,让其他应用可以通过标准的ContentResolver接口进行访问。这种机制使得数据可以在多个应用之间透明地共享...

    android 数据共享(ContentProvider)

    在Android系统中,数据共享是应用之间相互交互的重要方式,ContentProvider则是官方推荐的实现这一功能的核心组件。ContentProvider提供了一种标准化的机制,使得不同的应用程序可以安全、有序地访问和共享数据,...

    ContentProvider和ContentResolver

    在Android系统中,ContentProvider和ContentResolver是两个关键组件,它们是Android应用程序间数据共享的主要机制。通过ContentProvider,一个应用可以将自己的数据暴露给其他应用访问,而ContentResolver则充当了...

    android 应用程序数据共享

    在Android平台上,应用程序之间的数据共享是一项重要的功能,主要通过SQLite数据库和ContentProvider机制来实现。ContentProvider作为Android系统的一部分,允许不同的应用之间安全地访问和交换数据,即使这些数据...

    Android应用程序组件Content Provider的共享数据更新通知机制分析.doc

    在Android系统中,Content Provider是四大应用程序组件之一,它的主要职责是实现应用程序间的数据共享。Content Provider基于URI机制,使得不同应用能够访问和修改存储在Content Provider中的数据。当数据发生更新时...

    Android+Room+ContentProvider

    ContentProvider是Android系统中用于数据共享的一种机制,它可以使得应用的数据对其他应用可见并可操作。通过ContentProvider,我们可以实现跨应用的数据交换,比如联系人、日历等系统数据就是通过ContentProvider...

    android 自定义 ContentProvider 以及 ContentResolver

    在Android开发中,ContentProvider和ContentResolver是两个关键组件,它们构成了Android系统中不同应用程序间数据共享的基础。本文将深入探讨如何自定义ContentProvider和如何有效地使用ContentResolver进行数据操作...

    Android 应用程序之间的通信

    综上所述,Android应用程序之间的通信涉及到Intent的使用、BroadcastReceiver的监听、ContentProvider的数据共享以及Activity的交互。理解并熟练掌握这些概念对于开发健壮且功能丰富的Android应用至关重要。在实际...

    从头学Android之ContentProvider示例源代码

    在Android开发中,ContentProvider是四大组件之一,它充当了数据共享和访问的桥梁,使得不同应用程序之间可以安全地共享数据。本示例源代码旨在帮助初学者理解ContentProvider的工作原理及其使用方法。通过分析和...

    android之ContentResolver与ContentProvider介绍

    ContentResolver和ContentProvider构成了Android系统中跨应用数据共享的桥梁。ContentResolver作为一个统一的接口,使得应用程序可以无需关心数据的具体存储方式,只需通过Uri即可访问其他应用的数据。而...

    ContentProvider实现数据共享

    ContentProvider使得应用程序之间能够安全、有序地访问彼此的数据,无论是保存在SQLite数据库中的数据,还是存储在文件系统或者其他形式的数据。本教程将深入探讨如何利用ContentProvider实现数据共享。 一、...

    使用ContentProvider共享数据

    在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享和访问数据。"使用ContentProvider共享数据"这个主题涉及到如何构建和使用ContentProvider来开放数据库,以及如何通过ContentResolver来...

    ContentProvider获取系统的图片视频和音频

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作彼此的数据。本篇文章将详细讲解如何使用ContentProvider通过ContentResolver来获取系统的图片...

    实验8 contentProvider共享数据1

    总结起来,实验8的主要目标是理解和掌握Android中数据共享的机制,通过`ContentProvider`、`ContentResolver`和`ContentObserver`实现应用程序间的数据库操作和数据变更监听。这个实验有助于提升开发者在Android生态...

    Android中ContentProvider的示例

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地交换数据。本示例将深入讲解如何创建和使用ContentProvider。 首先,我们来理解ContentProvider的基本概念...

    使用contentprovider共享生词本数据

    在Android开发中,ContentProvider是一种重要的组件,它允许应用程序之间共享数据。本篇文章将深入探讨如何使用ContentProvider来共享生词本数据。首先,我们来看看什么是ContentProvider。 ContentProvider是...

Global site tag (gtag.js) - Google Analytics