Android 工具库 pandora 简介 沙盒的实现

Android 工具库 pandora 简介 - 沙盒的实现

Pandora 是一个优秀的开源 Android 开发工具,用来进行开发时候的一些辅助工作。本文简单介绍下 pandora 以下重要功能的对应实现方式:

  • 沙盒文件

沙盒文件

pandora 展示的沙河文件有如下三类:

  • Database 数据库的文件
  • SharedPreferences 文件
  • 应用沙盒目录下的文件树(即 context.getRootDir() 所获取到的目录)

接下来我们分别说这三类信息是如何获取到的,其关键的 API 分别是什么?

Database

主要涉及以下几个数据库相关 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,就可以实现以下操作:

    • 查询应用所有的数据库
    • 查询指定数据库的表
    • 查询指定表中的数据
    • 修改指定表中的数据

SharedPreferences

  • 遍历应用 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,可以实现:

  • 查询应用所有的 SharedPreferences 信息
  • 获取指定的 SharedPreferences 里的数据
  • 修改执行 SharedPreferences 中的数据

应用沙盒目录

该功能主要使用 File 一族相关的方法,因为及其常用,所以在此不加赘述了,主要包含:

  • File 对象的 listFiles() 方法用来获取目录下的子文件。
  • exists()isDirectory() 等判断文件等。
原文地址:https://www.cnblogs.com/wkmcyz/p/15643896.html