Pandora 是一个优秀的开源 Android 开发工具,用来进行开发时候的一些辅助工作。本文简单介绍下 pandora 以下重要功能的对应实现方式:
pandora 展示的沙河文件有如下三类:
context.getRootDir()
所获取到的目录)接下来我们分别说这三类信息是如何获取到的,其关键的 API 分别是什么?
主要涉及以下几个数据库相关 API :
context.databaseList()
用来获取应用的数据库列表,返回一个字符串数组
context.getDatabasePath(String databaseName)
用来获取某个数据库对应的文件,返回一个 File
对象
SQLiteDatabase.openDatabase(File databaseFile, SQLiteDatabase.CursorFactory factory, int flags)
用来获取数据库信息,返回一个 SQLiteDatabase
对象用来进行查询。
该
openDatabase
函数执行后需要使用SQLiteDatabase.close()
方法关闭。类似于文件操作
SQLiteDatabase
对象的 rawQuery(String querySQL,String[] selectionArgs)
方法,获取游标后进行查询。
SQLiteDatabase
对象的 compileStatement(String sql)
用来获取一个操作对象进行执行,返回一个 SQLiteStatement
对象
SQLiteStatement
对象类似于FragmentTransaction
对象,只是描述动作,并没有真正执行,需要下面的几个方法来提交执行
SQLiteStatement
提交执行的方法根据实际的语句不同而有差别,具体有使用 executeUpdateDelete()
、 executeInsert
这两种执行方式。
基于以上的 API,就可以实现以下操作:
遍历应用 dataDirectory 的 /shared_prefs
目录,获取其中所有的 .xml
文件,这里面的 xml 文件正常来说就是应用的 sharedPreferencnes 数据。
context.getSharedPreferences(String prefName, int mode)
方法用来读取指定 pref 文件里的数据信息。返回的是 SharedPreferences
对象
SharedPreferences
对象的 edit()
方法获取一个 SharedPreferences.Editor
对象,并且使用 putInt
/ putBoolean
等方法进行更新。
除了 dataDirectory 下的
/shared_prefs
目录包含有应用的 pref 文件外,还有一处和 "deviceProtect" 有关的目录也可能会有 pref 文件的存在,这个主要是目录问题,在此不讨论这个情况。具体可以参见 Android 官方文档 - DeviceProtectStorage
基于以上的 API,可以实现:
该功能主要使用 File
一族相关的方法,因为及其常用,所以在此不加赘述了,主要包含:
File
对象的 listFiles()
方法用来获取目录下的子文件。exists()
、 isDirectory()
等判断文件等。