Android移动应用开发教程(微课版) 课件 单元四 用户管理App_第1页
Android移动应用开发教程(微课版) 课件 单元四 用户管理App_第2页
Android移动应用开发教程(微课版) 课件 单元四 用户管理App_第3页
Android移动应用开发教程(微课版) 课件 单元四 用户管理App_第4页
Android移动应用开发教程(微课版) 课件 单元四 用户管理App_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元四用户管理App学习导读

在使用智能手机、平板电脑时经常需要存取一些数据,例如照片、歌曲、电影、图表文件等。Android作为移动设备操作系统,提供SharedPreferences、SQLite等多种方式存取数据。本单元主要通过介绍用户管理App,使读者掌握数据存储技术。学习目标知识目标:1.掌握输入框、按钮、复选框等常用组件的使用方法;2.理解数据存储方式和读写方法;3.掌握SQLite数据库操作类的常用方法。技能目标:1.能够利用SharedPreferences进行数据存取操作;2.能够对文件进行读写操作;3.能够熟练使用SQLite提供的操作类对数据库进行增加、删除、修改、查询等操作。素养目标:1.宣传《中华人民共和国数据安全法》,重视数据,强化数据保护意识;2.培养良好的编程习惯,树立正确的工作意识。思维导图4.1数据存储技术1.SharedPreferences

利用键值对方式存储数据2.文件系统

存储大量数据。3.SQLite的数据库管理系统存储和管理大量数据。4.1.1SharedPreferencesSharedPreferences是一种轻量级的数据存储方式。存储方式:以XML文件存储键值对数据。存储数据类型:boolean、int、float、long和String。文件存储位置:/data/data/<包名>/shared_prefs目录下。4.1.1SharedPreferencesSharedPreferences数据读取常用方法方法说明edit()返回SharedPreferences的内部接口SharedPreferences.EditorgetAll()返回所有配置信息Map对象getBoolean(Stringkey,booleandefValue)返回一个boolean值getFloat(Stringkey,floatdefValue)返回一个float值getInt(Stringkey,intdefValue)返回一个int值getString(Stringkey,StringdefValue)返回一个String值4.1.1SharedPreferencesSharedPreferences.Editor数据读取常用方法方法名称说明clear()清除所有值commit()提交保存putBoolean(Stringkey,booleanValue)保存一个boolean值putFloat(Stringkey,floatValue)保存一个float值putInt(Stringkey,intValue)保存一个int值putString(Stringkey,StringValue)保存一个String值remove(Stringkey)删除该键对应的值4.1.1SharedPreferences使用SharedPreferences存储数据的步骤第一步:根据Context获取SharedPreferences对象。第二步:利用edit()方法获取Editor对象。第三步:通过Editor对象存储key-value键值对数据。第四步:通过commit()方法提交数据。读取数据

通过SharedPreferences对象提供的getInt()、getString()等方法获取数据。4.1.1SharedPreferences案例:单击第一个按钮把姓名和年龄数据利用SharedPreferences进行存储,单击第二个按钮把数据取出,显示在文本框中。4.1.2内部存储

Android的文件存储方式分为两种:内部存储和外部存储。内部存储位于手机中很特殊的一个位置(不是手机内存),是手机系统自带的内部存储空间。以内部存储方式存储的文件属于其所创建的应用私有,其他应用无权进行操作。当创建的应用被卸载时,其内部存储的文件也随之被删除。内部存储空间也是系统本身和系统应用程序主要的数据存储所在地,该空间一旦空间耗尽,手机也就无法使用了。所以对于内部存储空间要尽量避免使用。SharedPreferences和SQLite数据库都是将数据存储在内部存储空间中。4.1.2内部存储1.内部存储读写文件的方法openFileInput(Stringfilename)向内部存储文件中读数据openFileOutput(Stringfilename,intmode)从内部存储文件中写数据内部文件存储位置:/data/data/<包>/files/Context.MODE_PRIVATE:默认操作模式,代表该文件是私有文件,只能被创建该文件的程序本身访问。在该模式下,写入的内容会覆盖原文件的内容。Context.MODE_APPEND:表示追加模式,该模式会检查文件是否存在,若存在就向文件的结尾处写入内容,否则就创建文件,写入内容。MODE_WORLD_WRITEABLE:表示当前文件可以被应用中的其他程序写入。MODE_WORLD_READABLE:表示当前文件可以被应用中的其他程序读,但不能写。4.1.2内部存储2.案例

单击第一个按钮把“我喜欢学习Android”写到内部存储文件中,单击第二个按钮从内部存储文件中把数据取出,显示在文本框中。4.1.3外部存储

外部存储是指将文件存储到外部存储设备上,例如SD卡或者设备内嵌的存储卡,属于永久性的存储方式。外部存储的文件不是某个应用程序所特有的,可以被其他应用程序共享,当其外部存储设备连接到计算机上时,这些文件可以被浏览、修改和删除等。因此,这种存储方式不具有安全性。4.1.3外部存储1.外部存储

由于外部存储设备可能处于被移除、连接到计算机、丢失、只读或者其他状态,因此在使用外部存储设备之前,必须使用Environment.getExternalStorageState()方法来确认外部存储是否可用。外部存储状态常量值如下表:常量值说明MEDIA_BAD_REMOVAL在没有挂载前外部存储已经被移除MEDIA_CHECKING正在检查外部存储MEDIA_MOUNTED外部存储已经挂载,并且挂载点可读写MEDIA_MOUNTED_READ_ONLY外部存储已经挂载,挂载点只读MEDIA_NOFS外部存储存在,但空白或使用了不支持的文件系统MEDIA_REMOVED外部存储被移除MEDIA_SHARED外部存储正在通过USB共享MEDIA_UNMOUNTABLE外部存储无法挂载MEDIA_UNMOUNTED外部存储没有挂载4.1.3外部存储

Environment类是一个提供访问环境变量的类,提供获取外部存储设备信息的方法。下表列举Environment类的方法。方法说明getDataDirectory()获得用户数据的目录getExternalStorageDirectory()获得外部存储的目录getExternalStoragePublicDirectory(Stringtype)获得用于存储特定类型文件的顶层共享或外部存储目录getExternalStorageState()获得外部存储的当前状态getRootDirectory()获取Android系统的根目录isExternalStorageEmulated()判断外部存储设备是否是可拆卸isExternalStorageRemovable()判断外部存储设备是否是可移除的4.1.3外部存储

Environment类是一个提供访问环境变量的类,提供获取外部存储设备信息的方法。下表列举Environment类的方法。方法说明getDataDirectory()获得用户数据的目录getExternalStorageDirectory()获得外部存储的目录getExternalStoragePublicDirectory(Stringtype)获得用于存储特定类型文件的顶层共享或外部存储目录getExternalStorageState()获得外部存储的当前状态getRootDirectory()获取Android系统的根目录isExternalStorageEmulated()判断外部存储设备是否是可拆卸isExternalStorageRemovable()判断外部存储设备是否是可移除的4.1.3外部存储

2.外部存储权限设置

Android6.0开始把权限分成正常权限和危险权限,在AndroidManifest.xml中声明的正常权限系统会自动授予(静态设置权限),而危险权限则需要在使用的时候用户明确授予(动态设置权限)。4.1.3外部存储静态设置权限在AndroidManifest.xml中加入访问外部存储的读写权限。<!--外部存储读数据权限--><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><!--外部存储写入数据权限--><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>4.1.3外部存储动态设置权限intpermission=ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE);//如果权限没有被赋予则动态申请权限if(permission!=PackageManager.PERMISSION_GRANTED){//第一个参数表示上下文//第二个参数表示权限常量名集合//第三个参数表示自定义的请求码ActivityCompat.requestPermissions(

this,newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},10);}4.1.3外部存储3.外部存储文件读取方法FileInputStream(Stringname):从外部存储文件中读数据FileOutputStream(Stringname):向外部存储文件中写数据4.1.3外部存储4.SD卡读写步骤第一步:添加静态权限和动态权限;第二步:获取外部存储设备是否加载成功,并可以访问;第三步:获取外部存储器的存储路径;第四步:使用输入/输出流进行文件读写。4.1.3外部存储5.案例

单击第一个按钮把“我喜欢学习Android”写到SD卡文件中,单击第二个按钮从SD卡文件中把数据取出,显示在文本框中。4.1.4SQLite数据库

SQLite是轻量级嵌入式数据库引擎,针对内存资源有限的设备(如手机、MP3、车载一体机)提供的一种高效的数据库引擎,它支持SQL语言,并且利用少量内存就能表现出不错的性能。SQLite不像其他数据库,它没有服务器进程,所有的内容包含在同一个单文件中,该文件支持跨平台,可以自由复制。其支持null、integer、real、text、blob等5种数据类型。

数据库文件存储位置:data/data/<包名>/databases/

操作SQLite数据库常用类:SQLiteDatabase、SQLiteOpenHelper、Cursor4.1.4SQLite数据库1.SQLiteDatabase类SQLiteDatabase代表一个数据库对象,主要负责打开或创建数据库,对数据表进行添加、删除、修改、查询等操作。方法说明openOrCreateDatabase(Stringpath,CursorFactoryfactory)打开或创建数据库insert(Stringtable,StringnullColumnHack,ContentValuesvalues)插入记录delete(Stringtable,StringwhereClause,String[]whereArgs)删除记录query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy)查询记录update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)修改记录execSQL(Stringsql)执行SQL语句close()关闭数据库4.1.4SQLite数据库2.SQLiteOpenHelper抽象类

Android系统提供了SQLiteOpenHelper抽象类,它是SQLiteDatebase类的辅助类,主要用于数据库的创建和版本更新。方法说明SQLiteOpenHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion)主要用来创建数据库和更新数据库版本。第一个参数代表上下文,第二个参数代表数据库名称,第三个参数代表游标工厂,第四个参数四代表版本号onCreate(SQLiteDatabasedb)继承时必须重写的抽象方法,创建数据库时调用onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)继承时必须重写的抽象方法,版本更新时调用getReadableDatabase()创建或打开一个只读数据库getWritableDatabase()创建或打开一个读写数据库4.1.4SQLite数据库3.Cursor类在Android中查询数据是通过Cursor类来实现的,当使用SQLiteDatabase的query()方法时,会得到一个Cursor对象。Cursor对象可以指向每一条记录,通过Cursor对象指针的移动实现记录浏览。它提供了很多查询相关的方法。方法名称说明getCount()获得记录条数isFirst()判断是否为第一条记录isLast()判断是否为最后一条记录moveToFirst()移动到第一条记录moveToLast()移动到最后一条记录move(intoffset)移动到指定记录moveToNext()移动到下一条记录moveToPrevious()移动到上一条记录getColumnIndexOrThrow(StringcolumnName)根据列名称获得列索引getInt(intcolumnIndex)获得指定列索引的int型值getString(intcolumnIndex)获得指定列索引的String型值4.2用户管理App实现

用户管理App案例主要实现用户登录、用户注册、用户浏览、记住密码等功能。要求数据存储在SQLite数据库中,用SharedPreferences技术实现记住密码,用ListView组件显示用户信息,设计思想为模块化设计。4.2用户管理App实现主要步骤:1.DBHelp类继承SQLiteOpenHelper类,主要用于创建数据库、表、初始化数据。2.UserManager类主要实现用户登录、用户注册、浏览用户等功能。3.记住密码功能实现通过SharedPreferences技术实现标识存储,通过判断标识实现记住密码功能。4.主页面设计实现记住密码、登录、跳转、注册等功能。5.内容页面设计利用ListView组件实现数据显示。4.2用户管理App实现1.DBHelp类设计publicclassDBHelp

extendsSQLiteOpenHelper{

//构造方法

publicDBHelp(@Nullable

Contextcontext){

super(context,"userinfo.db",null,1);

}

//数据库第一次运行的方法,只运行一次

publicvoidonCreate(SQLiteDatabase

db){

Stringsql1="createtablet_user(idintegerprimarykeyautoincrement,usernametext,pwdtext)";

db.execSQL(sql1);

Stringsql2="insertintot_user(username,pwd)values('java','123456')";

db.execSQL(sql2);

}

//更新数据库时调用的方法

publicvoidonUpgrade(SQLiteDatabase

db,intoldVersion,intnewVersion)

{

}}4.2用户管理App实现2.UserManager类设计publicclassUserManager{privateDBHelpdbHelp;publicUserManager(Contextcxt){

dbHelp=newDBHelp(cxt);}publicString[]

selectAll(){

String[]users;//其他代码略

returnusers;}publicboolean

isLogin(Stringusername,Stringpwd){

booleanflag=false;//其他代码略returnflag;}publicboolean

addUser(Stringusername,Stringpwd){

booleanflag=false;//其他代码略

returnflag;}}4.2用户管理App实现3.记住密码功能实现publicvoidsave_sp(){SharedPreferences.Editoreditor=sp.edit();editor.putString("name",user);editor.putString("pwd",pwd);editor.putInt("flag",1);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论