内容正文:
第11章 存储程序数据
Android Studio 移动应用开发基础(第 2 版)
目录
11.1 使用 SharedPreferences 存储程序数据
11.2 同步练习一
11.3 设置应用程序的首选项
11.4 同步练习二
11.5 在应用程序目录下存储程序数据
11.6 同步练习三
11.7 访问外部存储器
11.8 使用 SQLite 数据库存储程序数据
11.5 在应用程序目录下存储程序数据
一个 Android 应用程序,在被安装到 Android 平台上时,系统都会在/data/data 目录下,以该应用程序的包名为名,为该应用程序创建一个唯一的子目录,我们可以在该子目录下创建只有该应用程序才可以访问的子目录或文件;
Activity 提供了以下用于操作应用程序私有目录的方法。这些方法是在 Context 类中定义的,因为 Activity 类是 Context 类的子类,所以继承了这些方法:
File Activity.getFilesDir()。返回应用程序私有目录完整路径的 File 对象。例如,如果应用程序的包名为com.ttt.mysample,那么这个 File 对象的完整路径为/data/data/com.ttt. mysample/files。
File getDir(String name, int mode)。在应用程序的私有目录下,创建或返回一个名字为“app_”+ name 参数的子目录 File 对象,设置 mode 参数的值为 0 即可。
boolean deleteFile(String name)。在应用程序的私有目录下,删除一个名字与 name 参数一致的文件。
String[] fileList()。返回应用程序私有目录下的所有子目录和文件名。
FileOutputStream openFileOutput(String name, int mode)。在应用程序的私有目录下,打开或新建一个名字与 name 参数一致的文件,用于写入数据,设置 mode 参数的值为 0即可
11.6 同步练习三
参照 11.5 节中介绍的各个文件访问方法的功能,编写一个简单的 Android 应用程序。
11.7 访问外部存储器
使用 Android 提供的 Environment 工具类检查外部 SD 卡的状态及获取 SD 卡中的特定子目录,如是否插入 SD 卡、SD 卡当前是否可读、SD 卡当前是否可写、获取 SD 卡中特定子目录的 File 对象等。
在读/写外部 SD 卡前,需要为应用程序在 AndroidManifest.xml 文件中申请相应的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
11.7.1 检查 SD 卡的状态
在对外部 SD 卡进行读/写操作前,需要检查 SD 卡的状态,使用 Environment 类中的getExternalStorageState()方法获取 SD 卡的状态,其状态包括 MEDIA_UNKNOWN、MEDIA_REMOVED、MEDIA_UNMOUNTED、MEDIA_CHECKING、MEDIA_NOFS、MEDIA_MOUNTED、EDIA_MOUNTED_READ_ONLY、MEDIA_SHARED、MEDIA_BAD_REMOVAL、MEDIA_ UNMOUNTABLE;
11.7.2 获取 SD 卡中特定子目录的 File 对象
使用 Environment 类中的 getExternalStoragePublicDirectory(String type)方法可以获取 SD 卡中特定子目录的 File 对象,其中,type 参数的值包括 DIRECTORY_MUSIC、DIRECTORY_PODCASTS、DIRECTORY_RINGTONES、DIRECTORY_ALARMS、DIRECTORY_NOTIFICATIONS、DIRECTORY_PICTURES、DIRECTORY_MOVIES、DIRECTORY_DOWNLOADS、DIRECTORY_ DCIM;
在获取所需子目录后,就可以使用 java.io 包中的相关类及其方法,像操作普通文件一样,操作 SD 卡中的文件或目录了。
11.8 使用 SQLite 数据库存储程序数据
SQLite 是一个开源、免费的数据库管理系统
11.8.1 SQLite 数据库简介