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

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
分享到:
评论

相关推荐

    基于Android ContentProvider的总结详解

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

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--屏幕相关之Display类获取屏幕尺寸和分辨率 |--屏幕适配之ScrollView |--屏幕适配之像素dp和px之间转换 |--工具类之Log的封装类 |--工具类之不同log打印的封装 |--工具类之开启新的Activity |--布局加载器的获取 |...

    contentprovider

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

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android 插件plugin

    无法在插件中注册一些具有特殊Intent Filter的Service、Activity、BroadcastReceiver、ContentProvider等组件以供Android系统、已经安装的其他APP调用。 - f. 缺乏对Native层的Hook,对某些带native代码的apk支持...

    Android核心技术与实例详解 PDF扫描版

    全书分为三篇共18章 第一篇以简单易懂的实例为依托 详细介绍了Android平台的基本控件 高级控件 常用界面布局及菜单对话框等相关知识;第二篇介绍了Android平台的高级知识 包括消息与广播服务 网络数据处理 手机通信...

    疯狂Android讲义源码

     1.1.1 Android的发展和简介 2  1.1.2 Android平台架构及特性 3  1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装Eclipse和ADT插件 7  1.3 Android常用开发工具的用法 10  1.3.1 创建...

    Android程序设计基础

     第一部分中将首先介绍Android,内容涉及如何安装Android模拟器,如何使用IDE(Intergrated Development Environment,集成开发环境)编写第一个程序。然后,我们将介绍一些基本的概念,比如Android中的生命周期。...

    精通ANDROID 3(中文版)1/2

    20.3.1 使用GLSurfaceView和相关类  20.3.2 实现Renderer  20.3.3 通过Activity使用GLSurfaceView  20.3.4 更改照相机设置  20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  ...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    17.2.2 jbullet中常用类的介绍 468 17.3 箱子相互碰撞的案例 475 17.3.1 案例运行效果及准备工作 476 17.3.2 案例的基本框架结构 476 17.3.3 常量类——constant 477 17.3.4 3d场景渲染类——...

    Android应用基础实验指导书.doc

    完成Android开发平台的搭建及相关配置 2. 创建项目并熟悉文件目录结构 3. 实现例程HelloWorld 实验内容 安装Java JDK 下载所需版本的JDK,点击安装到C盘 " Java SE Development Kit 8u102 " "You must accept the ...

    精通Android 3 (中文版)2/2

    20.3.1 使用GLSurfaceView和相关类  20.3.2 实现Renderer  20.3.3 通过Activity使用GLSurfaceView  20.3.4 更改照相机设置  20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  ...

    android开发实例大全_王东华

    本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为18章,分别讲解了UI布局实例集锦、控件实例集锦、自动化服务实例集锦、数据存储实例集锦、电话和短信实例集锦、图形图像实例...

    360黑科技DroidPlugin.zip

    则设置为PackageManagerCompat.INSTALL_REPLACE_EXISTING返回值及其含义请参见PackageManagerCompat类中的相关字段。卸载插件,使用如下方法:int PluginManager.getInstance().deletePackage(String packageName,...

    安卓编程与应用

    为了能够使用 Context.startActivity(),所有的 activity 类都必 须在 AndroidManifest.xml 文件中定义有相关的“activity”项。 activity 类是 Android 应用生命周期的重要部分。 前台的生命周期,从 onResume()...

Global site tag (gtag.js) - Google Analytics