`
1140566087
  • 浏览: 560037 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18558
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314447
Group-logo
J2ME 基础学习课程集
浏览量:18790
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17591
社区版块
存档分类
最新评论

Android 之 ContentProvider的简介-相关类的介绍

阅读更多
Content Provider 的简单介绍:
* Android中的Content Provider 机制可支持在多个应用中存储和读取数据。这也是跨应用
  共享数据的唯一方式。在Android系统中,没有一个公共的内存区域,供多个应用共享存储数据;
* Android 提供了一些主要数据类型的ContentProvider ,比如:音频、视频、图片和私人通讯录等;
在android.provider 包下面找到一些android提供的ContentProvider;可以通过获得ContentProvider,
查询他们包含的数据(查询的条件是:已经获得适当的读取权限);


1、Uri的介绍:
Uri代表了要操作的数据,Uri主要包含了两部分的信息:
* 需要操作的ContentProvider
* 对ContentProvider 中的什么数据进行操作;
一个Uri由下列几个部分组成:
content://cn.itcast.provider.personprovider/person/10
解析:
* content:// :scheme
* cn.itcast.provider.personprovider : 主机名或anthority
* person/10 : 路径
* 10 : ID

1.1: ContentProvider(内容提供者)的scheme 已经由Android所规定,scheme为
content://主机名(或叫Authority)用于唯一标识这个ContentProvider,外
部调用者可以根据这个标识来找到它。路径path,可以用来表示我们要操作的
数据,路径的构建应根据业务定,例如:
(1) 要操作person表中id为10的记录,构建路径如下:/person/10;
(2) 要操作person表中id为10 的记录的name字段:person/10/name;
(3) 要操作person表中的所有记录: /person;
(4) 要操作xxx表中的记录: /xxx;
(5) 如果要操作的数据部是来自数据库,而是来自文件、xml或网络等其他存储方式;
例如:要操作xml文件中person节点下的name节点,构建路径如下:/person/name

如果要把一个字符串转换成Uri,可以使用Uri类中的parse()方法:
Uri uri = Uri.parse("content://itcast.provider.personprovider/person");

2、UriMatcher 类使用介绍:
由于Uri代表了要操作的数据,所以经常需要解析Uri,并从Uri中获取数据,Android中提供
了两个用于操作Uri的工具类:
* UriMatcher
* ContentUris

UriMatcher 类,用于匹配Uri,用法如下:
/*  UriMathcer 类的用法  */
    public void uriMatcher(){
    /* 常量UriMatche.NO_MATCH 标示部匹配任何路径的返回码 */
    UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
   
    /* 如果match()方法匹配content://cn.itcast.provider.personprovider/person 路径,
    * 返回匹配码为 1
    */
    /* 添加需要匹配的URL ,如果匹配就会返回匹配码  */
    sMatcher.addURI("cn.itcast.provider.personprovider", "person", 1);
   
    /* # 为通配符 *//* match():方法匹配:content://cn.itcast.provider.personprovider/person/230
    * 路径, 返回匹配码2
    *  */
    sMatcher.addURI("cn.itcast.provider.personprovider", "person/#", 2);
   
    /* 按上述添加的规则进行匹配,不同的路径匹配返回不同的匹配码 *//* 下列路径返回的匹配码为 2 */
    int code = sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"));
   
    }
   
    提示:
    注册需要匹配的Uri后,就可以使用sMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配
    就返回匹配码,匹配码是调用addURI()方法传入的第三个参数;

3、ContentUris 类的使用介绍:
ContentUris类,用于获取Uri路径后面的ID部分,有两个比较实用的方法:
* withAppended(uri,id) 用于为路径加上ID 部分;

Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person");
/* 为路径添加ID部分 */
Uri resultUri = ContentUris.withAppendedId(uri, 10);
/* 添加后的值为:content://cn.itcast.provider.personprovider/person/10 */

* parseID(uri) 从路径中获取ID 部分;

Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10");
/* 下列获取到的结果是:10 */
long personid = ContentUris.parseId(uri);


0
1
分享到:
评论

相关推荐

    contentprovider--读取写入联系人数据

    在Android系统中,ContentProvider是四大组件之一,它主要负责数据的存储和共享。这篇博客“contentprovider--读取写入联系人数据”显然聚焦于如何利用ContentProvider操作设备上的联系人信息。ContentProvider作为...

    ContentProvider--Demo

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

    android-关于ContentProvider的使用例子

    在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享的重要角色。ContentProvider使得应用程序之间能够安全、有序地访问彼此的数据,无论是系统内置的数据(如联系人、日历等)还是自定义的数据存储...

    Android 之 ContentProvider手机簿使用

    总之,"Android之ContentProvider手机簿使用"这篇博客深入浅出地讲解了如何利用ContentProvider实现对Android系统联系人数据的访问和操作,同时也介绍了ContentProvider在Android应用间数据共享的重要性。...

    Android应用开发使用ContentProvider以及SQLite实现对数据库的相关操作

    接下来,ContentProvider是Android四大组件之一,它提供了一种标准接口,使得其他应用程序可以访问和修改由ContentProvider管理的数据,无论这些数据是存储在SQLite数据库、文件系统还是网络中。要创建一个...

    Android ContentProvider简单实现

    1. **创建ContentProvider类**:继承自`android.content.ContentProvider`抽象类,重写其生命周期方法,如`onCreate()`,以及CRUD相关的方法,如`query()`, `insert()`, `update()`, `delete()` 和 `getType()`。...

    android开发contentprovider教学ppt(内部资料).pptx

    在Android开发中,ContentProvider是四大核心组件之一,它扮演着跨应用数据共享的角色。通过ContentProvider,一个应用可以将自己的数据暴露给其他应用,实现数据的透明访问。本篇内容将深入讲解ContentProvider的...

    android 创建数据库contentprovider

    ContentProvider是Android四大组件之一,它为其他应用程序提供了统一的接口来读取和写入数据。通过ContentProvider,即使数据存储在私有SQLite数据库中,其他应用也能安全地访问这些数据,而无需暴露数据库的直接...

    android大作业之---图书信息管理系统

    总结起来,"android大作业之---图书信息管理系统"涵盖了Android应用开发的核心技术,包括用户界面设计、数据管理、活动交互、数据操作以及用户体验优化等方面。通过实践这样的项目,开发者能深入理解Android应用开发...

    基于Android ContentProvider的总结详解

    相关概念介绍1)ContentProvider简介当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式...

    Android中ContentProvider(内容题供着)2访问自定义的内容提供者,共享Sqlite数据库数据

    例如,你可以创建一个名为`DatabaseContract`的类,其中包含表名、列名以及与之相关的URI。 ```java public class DatabaseContract { public static final String AUTHORITY = "com.example.provider"; public ...

    ContentProvider客户端

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和访问的重要角色。ContentProvider客户端是指应用程序通过ContentResolver接口来与ContentProvider交互,获取或修改存储在ContentProvider中的...

    android ContentProvider

    首先,ContentProvider是Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之一,其主要任务是为其他应用提供统一的数据访问接口。在Android系统中,每个ContentProvider都对应一个Uri...

    Android ContentProvider 使用详解源码

    ContentProvider是一个抽象类,它是Android四大组件之一,负责管理应用程序的数据,并提供统一的访问机制。开发者需要继承ContentProvider并重写其中的关键方法,如`query()`, `insert()`, `update()`, `delete()`...

    contentprovider

    8. **CPOther可能涉及的内容**:如果"ContentProvider"文件夹下有一个名为"CPOther"的子文件,它可能包含了一些与ContentProvider相关的辅助类或工具方法,比如自定义的数据库操作类、数据转换工具等,这些辅助类...

    Android 自定义ContentProvider简单实例

    Android 自定义ContentProvider简单实例主要介绍了Android 自定义ContentProvider简单实例的相关资料,需要的朋友可以参考下。Android 允许我们定义自己的ContentProvider 对象来共享数据,实践起来,简单来实现一下...

    android contentprovider的例子

    ContentProvider是Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之一,它为其他应用程序提供了统一的数据访问接口。通过ContentProvider,你可以将自己的应用数据暴露出去,比如联系人...

    Android--开发--【eoeAndroid--开发--特刊】第15期:Android--开发--多媒体.rar

    以下是对Android多媒体开发的详细介绍: 1. **多媒体文件支持**:Android支持多种多媒体文件格式,如MP3、AAC、WAV(音频)、MP4、3GP、WebM(视频)以及JPEG、PNG、GIF、BMP(图像)。Android Media Framework是...

Global site tag (gtag.js) - Google Analytics