【问题标题】:Access specified package directory访问指定包目录
【发布时间】:2021-02-22 12:30:03
【问题描述】:

所以我在访问根应用程序数据目录时遇到问题 我的示例目录: /data/app/com.android.chrome-jAB96abq4RXcFrKebL0BUQ==

我想在没有扩展名的情况下进入 /data/app/com.android.chrome 以获取列表文件夹 试过 /data/app/* com.android.chrome */ 但得到了 null

这是我的代码

String path = "/data/app/*com.android.chrome*";
File file = new File(path);
String[] dir = file.list();
for(int i=0;i<dir.length;i++) {
Toast.makeText(this, "File: "+dir[i], Toast.LENGTH_LONG).show();}

在此之前我已经将权限更改为 777 并使用 * com.android.chrome * 运行良好,但我上面的代码在尝试列出目录时返回 null

try {
Runtime.getRuntime().exec("su -c chmod 777 /data");
Runtime.getRuntime().exec("su -c chmod 777 /data/app");
Runtime.getRuntime().exec("su -c chmod 777 /data/app/*com.android.chrome*")
} catch (IOException e) { e.printStackTrace(); }

在没有 * 包 * 的情况下尝试过,但仍然为空 抱歉星星没有空格...因为文本编辑器识别为文本格式而进入空格

感谢之前

【问题讨论】:

  • 所以我必须将 com.android.chrome-jAB96abq4RXcFrKebL0BUQ== 包含到路径中?
  • 或者还有其他方法可以获取 com.android.chrome 中的文件夹列表吗?因为我确定每个设备都有不同的-extension :(

标签: android file root file-permissions


【解决方案1】:

您的代码不起作用,因为java.io.File 无法处理通配符。 您必须指定确切的路径。

由于普通用户无法读取/data,Java 代码将永远无法列出此目录中的目录(通配符需要列出目录)。

通过PackageManagerdataDir from the ApplicationInfo 获取您感兴趣的应用的应用信息:

context.getPackageManager().getPackageInfo("com.android.chrome", 0).applicationInfo.dataDir;

source

或者,您可以使用 su/root 运行 shell ls 命令,列出 /data/data 目录并解析 chrome 应用数据目录的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多