【发布时间】:2019-10-20 23:12:32
【问题描述】:
我将二进制可执行文件复制到位置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+ 中运行我的可执行文件?它在另一个目录中工作吗?感谢您的帮助。
【问题讨论】:
-
有什么解决办法吗?同样的问题
-
好像没有解决办法。从 API 29 开始,无法再运行提供的二进制文件... :-(
-
嗨...你找到解决方案了吗
标签: android processbuilder permission-denied