• 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() 等判断文件等。
  • 相关阅读:
    赛孚耐(SafeNet)加密狗 C#调用代码
    转 RMAN-20033
    MyBatis <foreach>
    MySQL InnoDB锁问题
    MySQL MyISAM表锁
    MySQL锁概述
    MySQL 优化表数据类型
    MySQL 优化分页思路
    MySQL EXPLAIN
    MySQL 开启慢查询日志
  • 原文地址:https://www.cnblogs.com/wkmcyz/p/15643896.html
Copyright © 2020-2023  润新知