我想读取设备上/ 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文件。