【发布时间】:2022-01-04 23:23:48
【问题描述】:
我正在制作一个可以运行 c、c++ 和 java 程序的 android 应用程序。该应用程序将各个文件存储在一个文件夹中,并使用以下代码执行。每当我单击编译按钮时,它都会显示一个 IO 异常,说“error=13 权限被拒绝”。
try {
p = Runtime.getRuntime().exec(path + "/PocketIDE/JavaPrograms/"+ filename);
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output2.append(line).append("\n");
p.waitFor();
}
String response = output2.toString();
output.setText(response);
} catch (IOException | InterruptedException e) {
output.setText(e.toString());
e.printStackTrace();
}
上述方法是执行程序的正确方法吗?还是我需要更改代码?
【问题讨论】:
-
为了从设备读取文件,您需要请求正确的权限。谷歌诸如“android请求文件权限”之类的更多细节。
-
@Code-Apprentice 我已经申请了在清单中修改、读取和写入外部存储的权限...我还需要包含任何其他权限吗?
-
让我们退后一步。哪一行导致错误?我假设
Runtime.getRuntime().exec()方法,对吧?读写权限不允许您执行任何操作。即使这样做了,使用运行您的应用程序的相同运行时实例执行任意代码似乎很危险。您应该派生一个新进程来运行程序,以便它可以在自己的沙箱中运行,并且在运行时不会干扰您的应用程序。
标签: java android android-studio compiler-construction