1、 第 1 页 内容提供者的学习 在本章中,我们将看看如何在 ,在程序应用中提供内容 。我们将 会讨论如何共享这些内容,以及如何访问和修改数据 。 我们已经从第一章学习到本章,学到了很多知识,当然这章也不例外。数据访问是 比事件处理和用户界面设计 更为复杂 。这是因为它涉及到数据库设计和要求访问数据库安全权限的 。事实上,从这一章中,我们将需要修改应用程序 的AndroidManifest.xml 清单 文件,所以要提醒大家马上要进入一些相当复杂的概念和代码设计 。 我们将 会从 content providers 是 Android 的 一个基本概念开始学习,它们 为Android 用户做 些
2、 什么。在此之后,您将学习 为了 Android 应用程序 , 如何使用SQLite 为基础的内容 提供者 ,尽管这已经超出了本章的范围和书籍。 Android 内容提供者的概述 Content Provider 是安卓开发的专有术语,这就意味着它是仅有的一个数据集,通常以 SQLite 数据库的形式呈现出来,它是安卓系统的一部分 。 您也 为您的应用程序 去创建自己的内容供应者 。一个 Android 内容提供者 为您提供了 可以访问 数据结构 , 通常被称为数据库。基本步骤如下: 1、得到 打开数据库 权限 。 2、 查询数据。 3、 访问数据。 在访问数据时,你可能会读取数据,写入数据(
3、即改变 现有的数据 的值) ,或在 数据库结构的基础上 添加新的数据和数据类型,在 the AndroidManifest.xml文件的安全权限级别 范围内 。 数据可以 android 内部存储器或外部存储器中,如 SD 卡,或即使在 Android设备本身 外的远程外部服务器 。 数据库和数据库管理系统 Android 应用 的内容提供者 提供的数据结构 通常是 通过数据库管理系统第 2 页 ( DBMS) 提供 。一个 DBMS 通过管理数据库提供的方法,为用户创建数据库,以及添加 由它们数据阅读和写作操作 的数据 。 在 Android 操作系统 内 有一个完整的开源 DBMS 被称为
4、 SQLite。这是 一个关系数据库管理系统 ( RDBMS) 。一个RDBMS 是基于 根据 表中的数据之间 关系 可以得出 之间的 关系。在本章的后面,您将看到如何将数据写入 到 RDBMS 的 这 些表中 。 SQLite 中的 SQL 代表结构化查询语言。在“精简版”或“光”的一部分描绘,这是一个“轻量级”版本的数据库管理系统,用于嵌入式应用在消费电子设备,和作为将被用于在计算机系统上 的 SQL 数据库 不是一个完整的 版本 。稍后,我们将会 让你 学习 如何 简单 地 访问 数据库中的数据记录和包含它们各自的数据字段内的数据。所有你真正需要了解 SQLite 的是,它是 Andro
5、id 的一个组成部分,你可以用它来存储 数据 。 Android 的需要掌握的是为你 服务 DBMS 功能 ! 在一个数据库管理系统,数据存储的最高水平是数据库本身,其中包含的表的行和列的数据。每个表是二维的,在那里一排被称为纪录。在每条记录 arefields,整理成列,其中包含各个数据项组成的记录。字段可以包含不同的数据类型,如数字,文字,甚 至引用被存储在其他地方的数据。但是 ,在同一 列的其他字段 (参见图 10-1) ,每个字段必须包含相同的数据类型 。 图 10-1 关系数据库管理系统 注意 :可以有一个以上的表在数据库(通常是,由于性能和组织方面的原因)。只能 有一个 主 键(唯
6、一的索引),用于每个表中的每个记录, 单条的信息数据 可以跨越多个表。举例来说,如果你的密钥或 ID 是 217,您的个人信息和电话信第 3 页 息可以是根据该相同的密钥值存储两个不同的表。 注意 :一旦数据结构和数据类型建好,就不能在改变数据库结构了,这就是当前加载的数据和类型可能不能添加到新定义的数据结构中,所以在你应该先设计数据结构,数据库设计对于确保你项目成功的重要环节。 内容提供者是为 Android OS 提供了 SQLite 的使用 ,因为它结构紧凑,开源的,所以我们要在本章中关注那些。 Android 创建内容提供者 通过 编码 使用 SQLite 数据库可以使 android
7、 能够 处理 一些 事情,用户希望从他们的手机和平板电 脑,如获取地址簿,摄像机图像存储,数字视频存储,音乐库,等等。 这些 SQLite 数据库结构 最常见 的是联系人 数据库。包的基层接口,使我们能够访问到在这些数据结构定义的每个 智能电话 用户 的 设置和个性化。显然,在这些结构的数据将是对于 完全不同用户的电话。 通讯录数据库与提供者联系 表 10-1 列出了在 http:/ /package-sunnary.htmlAndroid 开发者网站通讯录数据库的接口 。 表 10-1 Android1.X 支持的 Contacts 接口 接口 内容 Contacts.Organizatio
8、nColumns 组织 Contacts.GroupsColumns 分组 Contacts.PeopleColumns 联系人 Contacts.PhonesColumns 电话号码 Contacts.PhotosColumns 联系人照片 Contacts.PresenceColumns IM 存在 Contacts.SettingsColumns 手机设置 Contacts.ContactMethodsCoumns 联系方式 Contacts.ExtensionsColumns 电话扩展 如果你浏览 Android 文件,你会看到在表 10-1 中列出的接口都已经被注释弃用。弃用意味着这
9、些类被在新版本的编程语言(如 Java 类代替)或 API(如Android)。新的类替换旧的课程通常是更稳健的或复杂的,有时他们的区别仅在于它们是如何实现的。 第 4 页 在 Android 版本 1.X( 1.0,1.1,1.5 和 1.6)和 Android 版本 2.X 和 3.X( 2.0,2.1,2.2 和 3.0),相关的接口发生了变化。所以,数据库接口, Android 1.X手机和在 Android2.X 手机工作是不同的(在这种情况下 会是 更 加先进 和 复杂的功能 数据库结构,)。 如果你要支持 1.5 和 1.6 的手机(如我们所做的在这本书中),您将需要使用表 10
10、-1中列出的数据库接口 . 好消息是,放弃并不意味着不可以的。它更准确的手段这种情况下,不建议一般使用除非你需要支持 pre-2.0 版本你的 Android 用户。 所以,如果需要支持 Android 1.5 及以后的手机,你可以使用表 10.1 中列出的接口他们仍然在 2 X( 3.X)工作。智能手机。然而,你可能无法访问一些新领域的数据或表,除非你添加新 2.X,据库代码中的结构检测什么操作系统用户使用,并有代码段,处理每个 (1.X、 2.X)不同结构。 建议 :如果你想使用你的每一个特性,你需要让你的代码适配手机系统的不同版本,使用通用的代码去开发不同版本不同的功能。 就 Andro
11、id 来说,过时(开发者需要适应一个共同的问题)等同于 Android操作系统能够做不同的版本的东西,因而具有不同的功能,可用于每个操作系统级或版本。这是特别流行的 Android 操作系统版本是不同的支持新的手机和平板电脑硬件的不同特点,需要新的 API 和现有的 API,以支持新的硬件特性赋变化。 建议:统的不同版本,使用通用的代码去开发不同版本不同的功能。表 10-2列出了在新版本 2.X 关于调整相 关信息的内容提供者,这些取代过时的版本,在表 10-1 出 , 并 可 从 相 同 的 Android 开 发 者 网 站 的 链 接http:/ 表 10-2 Android 2.x C
12、ontent Providers 接口 内容 ContactsContract.CommonDataKinds.CommonColumns 子类化数据库 ContactsContract.ContactsColumns 联系人主 要信息 ContactsContract.ContactOptionsColumns 联系人 选项 ContactsContract.ContactStatusColumns 联系人 状态 ContactsContract.PhoneLookupColumns 手机号 ContactsContract.GroupsColumns 组定义 ContactsContrac
13、t.PresenceColumns IM 存在 第 5 页 ContactsContract.SttingsColumns 帐户设置 ContactsContract.StatusColumns 自己可见性 Android 多媒体中的内容提供者 以下的 content provider 比 Android 系统 content provider 重要,这些都是在表10-3所示 。 表 10-3 Android MeidaStore Content Providers 接口 内容 MediaStore.Audio.AlbumColumns 专辑信息 MediaStore.Audio.Artist
14、Colums 艺术家 信息 MediaStore.Audio.AudioColumns 音频信息 MediaStore.Audio.GenresColumns 音频类型信息 MediaStore.Audio.PlaylistsColumns 音频播放列表信息 MediaStore.Images.ImageColumns 数字图像 MediaStore.Video.VideoColumns 数字视频 MediaStore.MediaColumns 通用媒体商店 在本章的其余部分,我们将看看 如何使用声明的内容提供者,访问它们,阅读它们,修改它们 。 定义一个内容提供者 在一个可以使用 的 内容提
15、供者 里 ,它必须注册使用你的 Android 应用。 是通过使用一些 XML 标记在 AndroidManifest.xml文件做的。 的标签,所以恰当的命名,允许我们定义我们的内容提供商要访问我们的应用程序启动。这里是一个为 内容提供商: 。 所有的 Android 内容提供者可以在可公开访问的唯一的开发者 参考地址 访问,如果你允许 的话, 可以是 每个数据库。这个地址就是一个 URI,以及 Android数据库内的表总是叫 CONTENT_URL。 内容提供者可以 通过每个表一个独特的 URI 去访问多个表 。这里有几个例子预定 Android URI 常量: Android.prov
16、ider.Contacts.Phones.CONTENT_URL Android.provider.Contacts.Photos_ CONTENT_URL 第 6 页 Android 点表示操作系统, provider 点表示控件的类型, Contacts 点表示通讯录数据库 ,Phone 点表示电话号码表, CONTENT_URI 点表示内容的路径。就是这样的逻辑。 注意: URI 对象常被用作 Android Content providers 正如你在第八章看到使用Android Conten providers 从 content: /就像网址从 http: /入口一样。 在 Ecl
17、ipse 创建一个内容提供者实例项目 现在让我们创建一个 Chapter 10 project 的文件夹,因此这样你就可以学习一点更多关于 Android清单编辑器和 Eclipse如何自动化清单 XML编码的过程对我们来说。 1、 如果你从以前的章节打开的 Chapter9 的项目,右键文件夹选择关闭 2、 然后选择文件 -new-项目和选择 android 项目去打开新的 android 新项目的对话框 3、 按照下面填写(如图 10-2 所示) 项目名字:命名项目为 Chapter10 创建目标:设置 android 为 1.5 应用名字:命名应用为 Android Content Pr
18、oviders 包名 :设置包名为 content.providers 创建 Activity:勾选这个框然后命名 activity 为 DatabaseExamples 最小 SDK 版本:输入 3,这是相配的最低的 SDK 版本 第 7 页 图 10-2 创建 Chapter10 项目 定义安全的权限 AndroidManifest.xml 文件通常被简称 您 的应用 的 清单 文件 ,它告诉 我们,我们的 应用程序 就是 Android OS。在最初的被访问 的 启动应用程序 , 设置应用程序的 内存和任何系统资源或指针(地址启动的事情,我们要对话 或连接)需要为应用程序成功运行。 在这
19、种情况下,这意味 着我们将要求 Android 是否允许访问,并甚至可能改变(取决于我们添加的标签) , Android 的数据库之一 就是 前面的表格中列出 的。如果我们需要在 的某些领域 去操作,我们需要获得权限 使 Android 可以实现它以OS为基础一个稳定 的安全级别。去定义权限,使用 标签 。 这个标签允许应用去读 CONTACTS 数据库,只读权限是固有的安全,所以我们只能查看和读取数据库,只读的操作对于数据库是非破坏性的。 如果我们希望更改(重写或更新,或者添加)数据在数据库上,我们需要使用不同的权限标签去告诉 android 我们将要去写数据在 android 系统的数据库
20、。在这种情况, WRITE_CONTACTS 代表着我们将使用数据库使用的权限,正如你猜想的,写的标签如下: 第 8 页 许可写入操作是有点多严重的事情,因为事实上,我们是现在可以搞砸了数据库。在这种情况下,我们正在处理的智能手机的用户联系人数据,我们可能会覆盖在那里我们的应用程序之前,曾经数据访问它 。 建议 :这有不同的权 限标签来控制进 入 android 的服务和数据库部分。看一些它们的列表来获取 android 的一些常识让你可以学习关于智能手机的硬件,特色以及数据库。核查这个 D n. html。 你将会为这些功能为之吃惊! 现在让我们看看易于使用 Eclipse 添加必要的权限很
21、容易。遵循这些步骤: 1、 右键点击 AndroidManifest.xml 文件在资源管理器导航窗格中,如图 10-3所示,并选择 Open 或者敲 F3在键盘上敲 F3按钮。 图 10-3 在 Eclipse 可视编辑器中为 Chapter10 清单文件中添加权限 2、 在第 10 章清单 的 选项卡,点击底部的“权限”选项卡的窗口(见图 10-3) . 3、 在右窗格点击添加按钮。 4、 选择使用权限条目在列表的底部,然后单击 OK(见图 10-4)。 第 9 页 图 10-4 选择权限入口 5、 你在 Permission 窗格里面会看到用户权限,从下拉菜单看这些权限列表,选择 and
22、roid 的权限, READ_CONTACTS(看 图 10-5)。然后这些会显示在窗体的左边。 6、 在右侧选择 Uses Permisson 权限类型应该更新窗口左,但目前并没有,所以我们(冗余,因为它已经在 列表的底部)单击按钮强制清单编辑器用左窗格的适当的标签设置更新 Uses Permisson。 图 10-5 选择读内容的权限 7、 重复步骤 3 到步骤 6 添加另一个 Uses Permisson 标签,这个时候选择 Uses Permisson 的 android.permission.WRITE_CONTACTS 选项(见图 10-6)。 第 10 页 图 10-6 选择写内容的权限 这是所有我们加入的读写权限。 图 10-7 在清单文件结束标签外,最底部处 给我们展示了这两条权限标签。 建议: 无论你什么时间想使用 Eclipse 的清单编辑器,你可以单击窗体下面的 AndroidManifest.xm清单文件的标签,就是可以帮助你真实的看你所写的 xml标记代码。 图 10-7 xml 文件展示在可视编辑器上添加的权限
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。