无法运行程序“ /data/data/my.app.package/files/my-executable”:错误= 13,权限被拒绝

问题描述 投票:2回答:1

我将二进制可执行文件复制到路径context.getFilesDir()的位置/data/data/my.app.package/files/my-executable

/data/data/my.app.package/files/my-executable的文件许可为-rwxr-xr-x

然后我尝试使用java ProcessBuilder执行命令:

commands = Arrays.asList("/data/data/my.app.package/files/my-executable", "ls");
ProcessBuilder pb = new ProcessBuilder(commands);
pb.redirectErrorStream(true);
final Process p = pb.start();

语句pb.start()引发以下IOException:

Caused by java.io.IOException: error=13, Permission denied
       at java.lang.UNIXProcess.forkAndExec(UNIXProcess.java)
       at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
       at java.lang.ProcessImpl.start(ProcessImpl.java:141)
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

Cannot run program "/data/data/my.app.package/files/my-executable": error=13, Permission denied

我在测试电话上没有root访问权限。在Android版本9(API 28)之前,它可以正常工作。从Android 10(API 29)开始,我得到了上面的IOException。

如何在Android 10+中运行可执行文件?它可以在另一个目录中工作吗?感谢您的帮助。

android processbuilder permission-denied
1个回答
0
投票

我通过在'build.gradle(Module:app)'中将'android.defaultConfig.targetSdkVersion'的值从'29'更改为'28'来解决。

© www.soinside.com 2019 - 2024. All rights reserved.