`
lrc_1986
  • 浏览: 96072 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

传智播客--ContentProvider共享数据和ContentResolver的使用,Uri,UriMatcher和ContentUris

阅读更多
转载:http://blog.csdn.net/getclass/archive/2010/03/02/5340244.aspx
==================================================================================

这几天的学习,都是Android很实用的地方.所以练习起来,特别的有精神.今天主要学习的是Android中,统一数据访问的方式,和一些为了方便开 发.由系统提供的一些实用的工具类.如:用于匹配Uri的UriMatcher和获取Uri路径后面ID的ContentUris.这在工作中一定会用到 的,所以要认真的终结.

1.使用ContentProvider共享数据
1)继承 ContentProvider 并重写方法
ContentProvider创建后就会被调用:public boolean onCreate()
供外部应用往ContentProvider添加数据:public Uri insert(Uri uri, ContentValues values)
供外部应用从ContentProvider删除数 据:public int delete(Uri uri, String selection, String[] selectionArgs)
供 外部应用更新ContentProvider中的数据:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
供外部应用从 ContentProvider中获取数据:public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
返回当前Url所代 表数据的MIME类型:public String getType(Uri uri)
2)在 AndroidManifest.xml 使用 <provider> 对该 ContentProvider 进行配置
<provider android:name=".PersonContentProvider" android:authorities="cn.itcast.provider.personprovider"/>
3)使用ContentResolver操作ContentProvider中的数据 - 添加数据:public Uri insert(Uri uri, ContentValues values)
-删除数据:public int delete(Uri uri, String selection, String[] selectionArgs)
-更新数 据:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
-获取数据:public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
总结:
--ContentProvider共享数据是程序和程 序之间通信用的.
--继承ContentProvider类
--统一了数据访问方式

2.Uri
Uri代表 要操作的数据
content://cn.itcast.provider.personprovider/person/10
-scheme:content://
- 主机名或authority:cn.itcast.provider.personprovider
-路径:/person/10
总结:
--Uri 主要包含了两部分信息:需要操作的 ContentProvider,对ContentProvider中的什么数据进行操作
--要操作 person 表中 id 为 10 的记录,可以构建这样的路径 :/person/10
--要操作 person 表中 id 为 10 的记录的 name 字段, person/10/name
--要操作 person 表中的所有记录,可以构建这样的路径 :/person
--要操作 xxx 表中的记录,可以构建这样的路径 :/xxx

3.UriMatcher
UriMatcher 类用于匹配Uri
UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
添 加需要匹配uri,如果匹配就会返回匹配 码:sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1);//
sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);
switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) {
   case 1
    break;
   case 2
    break;
   default:// 不匹配
    break;
}
总结:
--常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码
--# 号为通配符

4.ContentUris
ContentUris 类用于获取Uri路径后面的ID部分
1)为路径加上ID: withAppendedId(uri, id)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
Uri resultUri = ContentUris.withAppendedId(uri, 10);
--生成后的 Uri 为: content://cn.itcast.provider.personprovider/person/10
2)从路径中获取ID: parseId(uri)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")
long personid = ContentUris.parseId(uri);
--获取的结果为 :10












分享到:
评论

相关推荐

    Android contentprovider总结

    - 解析 URI 获取其中的信息通常需要使用 `UriMatcher` 和 `ContentUris` 类。 #### 三、UriMatcher 与 ContentUris 使用详解 **1. UriMatcher** - **用途**:用于匹配特定的 URI,以确定执行何种类型的请求。 - **...

    免费下载:android ContentProvider详细解析

    ContentProvider 是 Android 四大组件之一,它主要用于在不同的应用程序之间实现数据共享。在 Android 中,每个应用程序都有自己的私有存储空间,默认情况下,一个应用程序无法直接访问另一个应用程序的数据。然而,...

    contentprovider

    综上所述,ContentProvider 是 Android 应用间数据共享的核心机制,它利用 URI 和标准方法提供了高效、安全的数据交互。理解和掌握 ContentProvider 的使用对于 Android 开发来说至关重要,因为它能够帮助开发者构建...

    APP开发教程 Java Android移动端开发 13、Android数据存储和共享(二) 共25页.pptx

    UriMatcher和ContentUris是ContentProvider操作中的关键工具。UriMatcher允许开发者为不同的URI路径指定对应的代码,从而方便地匹配和处理请求。ContentUris则提供了处理URI中ID部分的便捷方法,如添加或解析ID,这...

    ContentProvider--Demo

    在Android系统中,ContentProvider是一种核心组件,它扮演着数据共享和访问的桥梁角色。ContentProvider使得应用程序可以将自己的数据结构公开,让其他应用能够安全地读取或写入这些数据,实现了不同应用间的资源...

    contentprovider示例

    ContentProvider是Android系统中用于数据共享的一个核心组件。在Android应用程序之间,ContentProvider扮演着数据交换的桥梁角色,使得一个应用的数据可以被其他应用访问。本示例将深入讲解如何创建和使用...

    contentResolver数据库操作.docx

    在Android系统中,`ContentResolver`和`ContentProvider`是实现跨进程数据访问的重要机制之一。`ContentResolver`作为客户端部分,用于发起数据请求;而`ContentProvider`则作为服务器端部分,负责处理请求并返回...

    安卓学习笔记

    当需要访问ContentProvider时,通过ContentResolver接口进行操作,如在testInsert()方法中,使用ContentResolver.insert()插入数据,并通过ContentUris.parseId()获取新插入数据的ID。 接下来,我们关注JUnit测试。...

    android数据库共享技术

    定义URI格式,使用`ContentUris`和`UriMatcher`来处理路径匹配。 4. 实现`insert`、`delete`、`update`、`query`等方法来处理数据操作。 #### 五、示例代码解析 下面通过一个简单的例子来展示如何使用Content ...

    访问内容提供者源码

    3. **ContentQuery**:使用`CursorLoader`或者直接调用`ContentResolver.query()`执行查询,得到一个`Cursor`对象,用于遍历和读取数据。 4. **ContentValues**:当需要插入或更新数据时,使用`ContentValues`对象...

    自定义Provider demo

    通常,这会涉及到 UriMatcher 和 ContentUris 类。 5. 如果涉及到数据库操作,需要创建SQLiteOpenHelper子类,用于数据库的创建和升级。 6. 在其他应用中,通过ContentResolver对象来调用Content Provider的方法,...

    android 360安全卫士 反编译源码

    import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; import android....

Global site tag (gtag.js) - Google Analytics