当前位置:   article > 正文

南邮Android实验报告一:安卓数据存取_android数据存储实验报告

android数据存储实验报告

实验一 安卓数据存取

一、目的要求

1、理解安卓应用开发中持久数据存储相关概念和方法。

2、熟练掌握使用Shared Preference、SQLite内置数据库以及SD卡内文件等方式存取数据的技术。

3、了解进行数据存储时的相关权限申明以及授权方式。

二、实验环境

1、硬件配置:Intel Core i5及以上CPU、内存8G、固态硬盘容量200G以上。

2、软件环境:windows 7及后续版本;JDK 8;Android Studio 3.x及以上版本。

三、实验内容

设计一个界面,可以输入学号、姓名、年龄等信息,并通过不同的按钮触发事件并将分别其保存到Shared Preference、SD卡文件、数据库中,并能读取显示保存的内容。

建议界面布局设计如下:

Android_1_1

实际界面布局如图1所示。

Android_1_2_processed

图1 实验界面布局

四、实验步骤

实验具体功能代码的编写主要分为六步,分别为:将数据存入Shared Preference;将数据存入SQLite内置数据库;将数据存入SD卡文件;从Shared Preference读出数据;从SQLite内置数据库读出数据;从SD卡文件读出数据,如图2所示。

Android_1_3

图2 实验内容

下面给每个部分的关键代码。

将数据存入Shared Preference关键代码如图3所示。

Android_1_4

图3 将数据存入Shared Preference关键代码

将数据存入SQLite内置数据库关键代码如图4所示。

Android_1_5

图4 将数据存入SQLite内置数据库关键代码

将数据存入SD卡文件关键代码如图5所示。

Android_1_6

图5 将数据存入SD卡文件关键代码

从Shared Preference读出数据关键代码如图6所示。

Android_1_8

图6 从Shared Preference读出数据关键代码

Android_1_9

图7 从SQLite内置数据库读出数据关键代码

从SD卡文件读出数据关键代码如图8所示。

Android_1_10

图8 从SD卡文件读出数据关键代码

五、实验结果与分析

实验结果:

Shared Preference数据存取实验如图9至图10所示。

InkedAndroid_1_11

图9 Shared Preference数据写

图10 Shared Preference数据读

SQLite内置数据库数据存取实验如图11至图12所示。

InkedAndroid_1_13

图11 SQLite内置数据库数据写

InkedAndroid_1_14

图12 SQLite内置数据库数据读

SD卡数据存取实验如图13至图15所示。

InkedAndroid_1_15

图13 SD卡权限申请

InkedAndroid_1_16

图14 SD卡数据写

InkedAndroid_1_17

图15 SD卡数据读

附:数据库操作关键代码,如图16所示。

Android_1_18

图16 数据库操作关键代码

Android_1_19

图17 AndroidManifest.xml文件关键内容

六、 实验总结

本次实验较好地体现了模块化思想,即根据各自按钮所需实现的内容将整个代码分解为各自的小模块,分别进行回调函数代码的编写,实现起来较为容易。

本次实验使我掌握了使用Shared Preference、SQLite内置数据库以及SD卡内文件等方式存取数据的技术。在实验过程中需注意:进行SD卡相关代码的编写时,要在AndroidManifest.xml文件中添加对手机SD卡操作的权限,否则程序在执行相关代码时无法正确运行。

七、思考题

1、本次实验中的几种存储方式分别适用于那类数据的读取?

答:SharedPreferences只能保存简单类型的数据,例如四种基本类型(int,float,long,boolean)+String。Shared Preference适用于保存用户偏好设置比如某个checkbox的选择状态,用户登录的状态、配置信息,实现记住密码功能等等。如果需要存取比较复杂的数据类型比如类或者图像,则需要对这些数据进行编码,通常将其转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。

SQLite内置数据库适用于保存较多数据的情形。前两者适用于结构化数据的存储,它们都是以键值对的形式进行的文件存取。SQLite方便在不同的Activity,甚至不同的应用之间传递数据

SD卡内文件适用于流数据的存取,例如在手机上面存储音频,视频等文件,通过使用File操作进行存储。SD卡可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。

2、为什么安卓的后续版本中设计了动态授权机制?是如何实现的?

答:Android 应用程序是沙箱隔离的,每个应用都有一个只有自己具有读写权限的专用数据目录,应用只能访问自己的文件和一些设备上全局可访问的资源。如果需要访问系统服务,就需要Android的动态权限机制。所以根本原因一是沙箱隔离,二是服务支持的需求。安卓动态授权机制将所有权限分成了正常权限和危险权限。应用的相关功能每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。这样做是为了进一步保证安卓用户的手机信息安全。

在每个应用安装时,权限就已经赋予了,系统使用包管理服务来管理权限。打开我们系统目录下的 /data/system/packages.xml,可以看到文件包含了所有已定义的权限列表和所有 apk 的包信息,这可以看做是包管理服务维护的一个已安装程序的核心数据库,这个数据库,随着每次应用安装、升级或卸载而进行更新。

动态权限是通过Activity的requestPermissions方法来申请的,此方法会调用PackageManager的buildRequestPermissionsIntent创建动态权限申请的Intent,然后通过startActivityForResult方法广播出去等待返回结果。权限申请广播发送出去后会启动应用PackageInstaller的GrantPermissionsActivity界面用于处理权限的动态申请。GrantPermissionsActivity也就是我们常见的权限申请界面,用户可以根据提示选择是否授权给应用相应的权限。用户操作后的结果会通过回调GrantPermissionsActivity的onPermissionGrantResult方法返回。在onPermissionGrantResult方法中会根据返回结果去决定是走授予权限还是撤销权限流程,然后会更新授权结果,最后返回结果并结束自己。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/173231
推荐阅读
相关标签
  

闽ICP备14008679号