美文网首页
在手机未Root查看data/data文件夹中应用的目录,及复制

在手机未Root查看data/data文件夹中应用的目录,及复制

作者: 馨予务心竞 | 来源:发表于2020-12-11 11:06 被阅读0次

    查看:Android studio里的Device File Explorer查看

    复制数据数据库:

    (一)工具保存;直接接着上面找到自己的数据库,然后单击右键。saveAs选择要保存的地址,即可保存成功

    1.在AnroidManifest.xml中将debuggable属性设置为false,设置为true将无法在没有root权限的情况下查看应用的目录,会得到类似permission denied的信息。

    2.获取test数据库文件路径:Applications.context().getDatabasePath("test")

    3.复制数据文件到指定目录

    try {

    copyDB(Applications.context(),Applications.context().getDatabasePath("approval"),new                    File(FileUtil.getFilePath()+File.separator+"approval_db.db"));

    }catch (IOException e) {

    LogUtils.e("copyDB:"+e);

      e.printStackTrace();

    }

    /**

    * 复制数据库

    * */

    private  void copyDB(Context context, File fromDB, File toDB)

    throws IOException {

    // 判断是否存在文件

      LogUtils.e("copyDB:"+"-toDB-Path:"+toDB.getPath());

      if (toDB.exists()) {

    // 已经存在文件

          toDB.delete();

      }

    // 创建新的db

      SQLiteDatabase s = SQLiteDatabase.openOrCreateDatabase(toDB, null);

      // // 复制asseets中的db文件

      // InputStream myInput = context.getAssets().open(Constant.SYS_DB_NAME);

      InputStream myInput =new FileInputStream(fromDB);

      String outFileName = toDB.getPath();

      OutputStream myOutput =new FileOutputStream(outFileName);

      byte[] buffer =new byte[1024];

      int length;

      while ((length = myInput.read(buffer)) >0) {

    myOutput.write(buffer, 0, length);

      }

    myOutput.flush();

      myOutput.close();

      myInput.close();

      s.close();

    }

    相关文章

      网友评论

          本文标题:在手机未Root查看data/data文件夹中应用的目录,及复制

          本文链接:https://www.haomeiwen.com/subject/mtcjgktx.html