五、手机外部存储
所有兼容Android的设备都支持一个可共享的“外部存储(external storage)”,可用来保存文件。这可以是一个可移动的存储设备(比如SD卡)或者一个内部的(不可移动的)存储。保存在外部存储的文件是可全局读写的。
Sdcard存储的特点(外部存储):
依赖于Sdcard,使用SDCard存储,需先检测其状态,能够挂载成功
存在Sdcard的文件是可全局读写的
写入Sdcard时,需要权限
关注点:
Environment.getExternalStorageState() 取得外部存储状态 //环境
Environment.getExternalStorageDirectory() 取得外部存储根路径 //
写入外部存储的权限
android.permission.MOUNT_UNMOUNT_FILESYSTEMS //挂载、卸载文件系统
android.permission.WRITE_EXTERNAL_STORAGE //写外部存储权限
android.permission.READ_EXTERNAL_STORAGE //读外部存储的权限
在android 4.0以后,假如你的外部存储的路径不规范,则需要该权限
外部存储路径描述
1.取得外存的公共共享的存储路径
取目录:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
/mnt/sdcard/downloads/
2.在外存中存放应用的私有数据,但是该数据可以全局读写,当应用删除时,该内容会同步删除 :
取目录:context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
目录/mnt/sdcard/android/data/<包名>/files/<类型>/
3.在外存中存放应用的私有缓存文件 ,当应用删除时,该内容会同步删除
取目录: context.getExternalCacheDir()
目录 /mtn/sdcard/android/data/<包名>/cache
4.取得外存的根路径
取目录:Environment.getExternalStorageDirectory()
/mnt/sdcard
六、SharedPreferences :共享偏好设置存储
SharedPreferences,是一个非常轻量的数据存储方式,
以xml的形式存取简单的键值对数据,存放基本的数据。
数据类型包括(ints,floats,boolean,strings,longs,Set<String>(android 11以后)),
存放位置:/data/data/<包名>/shared_prefs,存放的是应用私有的数据,
主要用于软件偏好设置,简单信息存取、数据缓存等
如何取得SharedPreferences对象
context.getSharedPreferences(name,Mode)
返回的是SharedPreferences对象,通过该对象存储简单的键值对数据到该对象关联的xml文件中
name :文件名,不需要写扩展名,默认是*.xml :有则打开,无则创建
mode :在android 4.0版本 以后,只支持mode_private
Activity.getPreferences(name)
name :默认的名字,以当前的Activity的类名作为文件名
get values
SharedPreferences.getString(key,defvalue) ,取字符串类型的数据,假如key不存在,则返回 defvule : null
SharedPreferences.getInt(key,defvalue) ,取整数类型的数据,假如key不存在,则返回 defvule : 0
SharedPreferences.getBoolean(key,defvalue) ,取字符串类型的数据,假如key不存在,则返回 defvule : false
save values
实现步骤:
取得编辑器 Editor editor=SharedPreferences.edit()
editor.putString(key,value)
editor.putInt(key,value)
editor.putBoolean(key,value)
editor.commit();//提交数据,把键值对数据更新到xml文件中
小案例 :运用SharedPreferences保存用户登录信息
要求:
1.账号密码验证成功,则进入另一个Activity:SystemActivity
2.选中复选框,则用户登录时,把账户及密码信息以SharedPreferences存储xml文件中
3.应用下次启动,依据存储的复选框状态值,决定是否填充账户与密码信息
4.对存入SharedPreference的值对信息加密
des :对称加密 : 加密和解密密钥是相同的 ,把密文还原成原文
aes 对des加强版
重点:
通知
手机内存存储、手机外部存储
SharedPrefenrencs
练习:
SharedPrefenrencs
FileStore 项目: 从sdcard读数据
通知