更改以编程方式读取数据/ anr文件的权限

时间:2018-07-24 21:03:38

标签: java android adb chmod

我想读取设备上/ data / anr /目录中的ANR文件。我已经设法将apk文件推送到/ system / priv-app /目录,因此我可以在程序中列出该apk生成的anr文件,但无法读取每个文件(当前有2个文件)。 他们的当前权限设置为“ -rw -------”,在我执行时 使用chmod 644 /data/anr/anr-name adb shell,权限成功更改为“ rw-r--r--”,我可以通过程序读取它们。但是,由于生成时无法预测,因此我想在Android Studio Java程序中将权限更改为644。

我尝试过:

  • POSIX权限

    Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("rw-r--r--"));
    

    这导致我的程序挂在那一行。

  • 使用CLibrary接口的JNA chmod库

    private static CLibrary libc = (CLibrary) Native.loadLibrary("c", CLibrary.class);
    libc.chmod("/data/anr/anr-name", 0644);
    

    这也导致我的程序也挂起。

  • Runtime.getRuntime()。exec()

    String[] str = new String[3];
    str[0] = "chmod";
    str[1] = "644";
    str[2] = "/data/anr/anr-name";
    Process pro = Runtime.getRuntime().exec(str);
    pro.waitFor();
    

    pro.waitFor()返回1,pro.getErrorStream()返回“不允许的操作。”

  • java.io.File.setReadable(布尔型可读)

    file.setReadable()
    

    file.isReadable()返回false,并且文件权限未更改。

为记录起见,我有一个植根设备。我的min和Target SDK版本是API26。

我也无法在程序中执行“ su”,因为当我尝试时,它给了我一个“权限被拒绝”错误。

我完全不知所措。我只想从程序中读取ANR文件。

0 个答案:

没有答案