随笔分类 - Android
摘要:简单起见,我们还是在上一章中 DatabaseTest 项目的基础上继续开发,通过内容提供器 来给它加入外部访问接口。 打开 DatabaseTest 项目,首先将 MyDatabaseHelper 中使用 Toast 弹出创建数据库成功的提示去除掉,因为跨程序访问时我们不能直接使用 Toast。然
阅读全文
摘要:我们学习了如何在自己的程序中访问其他应用程序的数据。总体来说思 路还是非常简单的,只需要获取到该应用程序的内容 URI,然后借助 ContentResolver 进行CRUD 操作就可以了。可是你有没有想过,那些提供外部访问接口的应用程序都是如何实现这种功能的呢?它们又是怎样保证数据的安全性,使得隐
阅读全文
摘要:读取系统联系人 由于我们之前一直使用的都是模拟器,电话簿里面并没有联系人存在,所以现在需要自 己手动添加几个,以便稍后进行读取。打开电话簿程序,界面如图 7.1 所示。 图 7.1 可以看到,目前电话簿里是没有任何联系人的,我们可以通过点击 Create a new contact按钮来对联系人进行
阅读全文
摘要:我们学了 Android 数据持久化的技术,包括文件存储、SharedPreferences 存 储、以及数据库存储。不知道你有没有发现,使用这些持久化技术所保存的数据都只能在当 前应用程序中访问。虽然文件和 SharedPreferences 存储中提供了 MODE_WORLD_READABLE
阅读全文
摘要:ContentProvider是Android四大组件之一,网上也有不少关于它的文章,基本用法都可以查到,但关于UriMatcher在其中的作用,文章中都有例子,但我觉得还没有说清楚。 先说为什么用UriMatcher。 ContentProvider向外界提供了一个标准的,也是唯一的用于查询的接口
阅读全文
摘要:6.5.1 使用事务 前面我们已经知道,SQLite 数据库是支持事务的,事务的特性可以保证让某一系列的操 作要么全部完成,要么一个都不会完成。那么在什么情况下才需要使用事务呢?想象以下场 景,比如你正在进行一次转账操作,银行会将转账的金额先从你的账户中扣除,然后再向收 款方的账户中添加等量的金额。
阅读全文
摘要:虽然 Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些 人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库。这种人 一般都是属于 SQL 大牛,如果你也是其中之一的话,那么恭喜,Android 充分考虑到了你们 的编程习惯,同样提供了一
阅读全文
摘要:掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了。不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作。 我们都知道 SQL 的全称是 Structured Query Language,翻译成中文就是结构化查询语言。 它的大部功能都是体现在“查”这个字上
阅读全文
摘要:删除数据对你来说应该就更简单了,因为它所需要用到的知识点你全部已经学过了。 SQLiteDatabase 中提供了一个 delete()方法专门用于删除数据,这个方法接收三个参数,第一 个参数仍然是表名,这个已经没什么好说的了,第二、第三个参数又是用于去约束删除某一 行或某几行的数据,不指定的话默认
阅读全文
摘要:学习完了如何向表中添加数据,接下来我们看看怎样才能修改表中已有的数据。 SQLiteDatabase 中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法 接收四个参数,第一个参数和 insert()方法一样,也是表名,在这里指定去更新哪张表里的数据。第二个参数是 Conte
阅读全文
摘要:现在你已经掌握了创建和升级数据库的方法,接下来就该学习一下如何对表中的数据进 行操作了。其实我们可以对数据进行的操作也就无非四种,即 CRUD。其中 C 代表添加 (Create),R 代表查询(Retrieve),U 代表更新(Update),D 代表删除(Delete)。每一种操 作又各自对应了
阅读全文
摘要:如果你足够细心,一定会发现 MyDatabaseHelper 中还有一个空方法呢!没错,onUpgrade() 方法是用于对数据库进行升级的,它在整个数据库的管理工作当中起着非常重要的作用,可 千万不能忽视它哟。 目前 DatabaseTest 项目中已经有一张 Book 表用于存放书的各种详细数据
阅读全文
摘要:SQLite 是一款轻量级的关系型数据库,它的运算速度非常快, 占用资源很少,通常只需要几百 K 的内存就足够了,因而特别适合在移动设备上使用。SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID 事务,所以只要你以前使用过其他的 关系型数据库,就可以很快地上手 SQLite。而
阅读全文
摘要:既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项目,来编辑一下登录界面的布局。修改 login.xml 中的代码,如下 所示: <TableLayo
阅读全文
摘要:不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是 说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可 以通过这个键把相应的值取出来。而且 SharedPreferences 还支持多种不同的数据类型存储, 如果存储的数据类
阅读全文
摘要:数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑 关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在 存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状 态和持久状态之间进行转换。 持久化技术被广泛应用于各种程序
阅读全文
摘要:adb是Android重要工具之一,以提供强大的特性,例如复制文件到设备或从设备复制文件。可以使用Android Shell命令行参数连接到手机本身,并发送基本的 shell 命令。 进入命令行,使用 adb shell 进入到Android Shell命令模式,注意,这时候模拟器或者手机要启用并且
阅读全文
摘要:启动模拟器调试,执行ADB指令时,报错。C:\Users\gaojs>adb shellerror: more than one device and emulatorC:\Users\gaojs>adb install e:\good.apkerror: more than one device
阅读全文
摘要:10-11 11:47:27.472: E/AndroidRuntime(12804): java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.zhl.classguiding/cn.zhl.classguidin
阅读全文
摘要:强制下线功能应该算是比较常见的了,很多的应用程序都具备这个功能,比如你的 QQ 号在别处登录了,就会将你强制挤下线。其实实现强制下线功能的思路也比较简单,只需要 在界面上弹出一个对话框,让用户无法进行任何其他操作,必须要点击对话框中的确定按钮, 然后回到登录界面即可。可是这样就存在着一个问题,因为我
阅读全文