实验一 安卓数据存取

一、目的要求

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卡文件、数据库中,并能读取显示保存的内容。

建议界面布局设计如下:

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

图1 实验界面布局

四、实验步骤

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

图2 实验内容

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

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

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

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

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

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

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

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

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

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

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

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

五、实验结果与分析

实验结果:

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

图9 Shared Preference数据写

图10 Shared Preference数据读

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

图11 SQLite内置数据库数据写

图12 SQLite内置数据库数据读

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

图13 SD卡权限申请

图14 SD卡数据写

图15 SD卡数据读

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

图16 数据库操作关键代码

图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方法中会根据返回结果去决定是走授予权限还是撤销权限流程,然后会更新授权结果,最后返回结果并结束自己。

南邮Android实验报告一:安卓数据存取相关推荐

  1. 南邮Android实验报告二:安卓网络编程

    实验二 安卓网络编程 一.目的要求 1.理解安卓应用开发中调用web服务的过程和方法. 2.学习在应用开发中使用第三方开发包的过程和方法. 3.掌握json数据的解析方法. 二.实验环境 1.硬件配置 ...

  2. 南邮Android实验报告三:基于高德地图的综合应用

    实验三 基于高德地图的综合应用 一.目的要求 1.学会安卓应用中涉及位置服务时的解决方案. 2.练习在使用第三方插件时,遇到版本不兼容时的处理步骤和方法. 二.实验环境 1.硬件配置:Intel Co ...

  3. 南邮计算机实验报告合集【非常全】

    南邮计算机实验报告合集 GitHub上自取,可以借鉴,请勿直接抄袭 南京邮电大学数据结构实验,南京邮电大学离散数学实验,南京邮电大学操作系统实验,南京邮电大学电工电子基础实验B实验,南京邮电大学汇编语 ...

  4. 南邮matlab实验报告,南邮matlab实验报告.doc

    南邮matlab实验报告 软件课程设计 实验报告 模块名称:__MATLAB_____________ 专业班级:__ __________ 姓 名:__ _____________ 学 号:__ _ ...

  5. C语言南邮数据结构实验报告2,南邮数据结构实验报告.docx

    南邮数据结构实验报告 实验报告 课程名称 实验名称数据结构二叉树基本操作以及哈夫曼编码译码系统 实验时间 指导单位指导教师年月日 学生姓名 学院(系) 班级学号专业 二叉树的基本运算: 一.问题描述 ...

  6. 南邮java实验报告,南邮微机原理实验报告精选.doc

    南邮微机原理实验报告精选 <微型计算机原理与接口技术> 上机实验 学 院: 电子科学与工程 专 业: 电磁场与无线技术 姓 名: 陈秀慧 课 程 号: B0300062S 学 号: 任课老 ...

  7. 南邮MySQL实验报告一

    创建数据库模式与SQL查询 一.实验目的和要求 1. 通过上机实践,熟悉MySQL的操作环境及使用方法.2. 掌握数据表的创建以及表的操作.3. 熟练掌握Select-SQL命令,进行数据的查询. 二 ...

  8. 广东东软学院安卓实验报告三:“数据存储”

    广东东软学院安卓实验报告三:"数据存储" Android schoolwork entertainment app: imitating wechat Software tips: ...

  9. Java实验报告Android活动,Android实验报告—网络通信

    <Android实验报告-网络通信>由会员分享,可在线阅读,更多相关<Android实验报告-网络通信(11页珍藏版)>请在人人文库网上搜索. 1.实验三 Android网络通 ...

最新文章

  1. Fast-SCNN的解释以及使用Tensorflow 2.0的实现
  2. 20180320作业1:源代码管理工具调查
  3. php forms 上传更新json_通达OA任意文件上传漏洞详细分析
  4. OpenGL使用深度剥离命令获得独立的透明度
  5. MySQL全文索引应用简明教程
  6. 增加外键时候的一个小错误
  7. C# 操作并口类,并口通信
  8. jQuery.Callbacks之demo
  9. 输出整数各位数字 (15 分)
  10. java二叉树的序列化_二叉树的序列化和反序列化
  11. 认识 URL 及其编码
  12. 大一微积分笔记整理_大一上学期微积分高数复习要点
  13. 软件项目架构简单总结
  14. Android UI开发:AlertDialog对话框
  15. python matplotlib 官方配色表
  16. 工作中如果一直被领导忽略,你会怎么办?
  17. 让研发团队找准市场需求
  18. 如何修改linux中的文本格式
  19. 宽带认证计费系统的认证技术主要有哪些
  20. 分布式基础——GFS(Google file system)

热门文章

  1. 飞秋feiQ恢复以前的配置
  2. 硬盘健康度检测linux,linux硬盘检测健康状态
  3. 公司被发律师函怎么办?
  4. SystemUI状态栏形式及流程
  5. hypermesh 连接单元_大众新版DQ200变速箱更换控制单元操作教程_搜狐汽车
  6. 5G智能灯杆和智慧合杆的区别和功能介绍
  7. r7和i7处理器适合安Linux,R7与i7处理器区别
  8. 基于VGG16网络的花卉识别
  9. 第11课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图8(北冥有鱼)
  10. 中国人保为哈尔滨宝月雅生物科技有限公司承保产品责任险,为消费者保驾护航