一、说明

Android应用或游戏在数据持久化时,一般会将文件写入到sdcard或者私有目录files目录下,也可以直接在私有目录下新建文件夹进行存入。
如:
/storage/emulated/0/Android/data/[package name]/
/storage/emulated/0/Android/data/[package name]/files/
/data/user/0/[package name]/
/data/user/0/[package name]/files

由于权限机制的设定,sdcard目录用户只需注册对应权限即可访问,shell用户可直接访问。
而应用私有目录,一般用户除自应用外没有权限进行访问,包括shell在内。

二、可行方案

1、手机进行ROOT,shell运行时执行su命令,通过权限管理工具获取ROOT权限,进而可以访问任意位置;
2、利用多开器的特性,在virtualxposed、平行空间中运行程序,利用其它应用对该程序进行读取数据,因为都处于同一多开器中,权限对等,可以相互访问私有目录和内存空间等;
3、自身应用执行时,代码执行权限设置,开放私有目录给外部用户,用于测试。

三、实现

1、获取ROOT权限后,使用是最方便的,但是出于某些原因或者情况,可能没法获取ROOT权限,因此此方案不提。

2、多开器的方案需要定制化的设置,当然可以和第三种方案进行结合,效果也不错,唯一有个问题,要保证自身应用兼容多开器。

3、通过自身代码执行获取权限,关键在通过chmod函数实现.

String filesPath = getApplication().getFilesDir().getAbsolutePath();String privatePath = filesPath.substring(0,filesPath.lastIndexOf('/'));try {    Runtime.getRuntime().exec("chmod 777 " + filesPath);    Runtime.getRuntime().exec("chmod 777 " + privatePath);} catch (IOException e) {    e.printStackTrace();}

改了之后直接可以通shell权限进行访问。

更多相关文章

  1. Android(安卓)安全架构及权限控制机制剖析
  2. Android
  3. android的文件操作
  4. Android之使用ContentResolver对通信录中的数据进行简单操作
  5. list_item 们
  6. android 读取SQLite android could not open the database in re
  7. Android(安卓)Tips: 打电话和发短信
  8. android读取文件权限
  9. Android操作权限设置与Apk真正安全的缓存数据

随机推荐

  1. javascript 构造函数中的属性与原型上属
  2. 使用Node.js初始化和配置AWS
  3. 深入浅出 Ajax 读书摘记2——【Ajax请求
  4. Javascript学习:案例7--对象属性和方法的
  5. css选择在IE中不起作用
  6. 注入html行模板的最佳方法
  7. require():使用module.exports vs直接分配给
  8. iOS uiwebview无法从javascript方法加载
  9. 为什么括号用于包装javascript函数调用? [
  10. js 不同类型var的boolean运算验证