我尝试通过使用Runtime类和ndk系统/exec函数在android应用程序上运行shell命令。
首先,我使用由其他用户指导的Runtime类。从android执行shell命令
Runtime.getRuntime().exec("/data/local/tmp/test.sh");(我仔细检查了文件权限,结果是777)但是当我运行upper命令时发生以下错误:
try {
Process process = Runtime.getRuntime().exec("/data/local/tmp/test.sh");
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
process.waitFor();
return output.toString();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
误差
at com.sec.sq.myapp.apis.test.tasks.test.MyTester.exec(MyTester.java:47)
at com.sec.sq.myapp.apis.test.tasks.test.MyTester.run(MyTester.java:29)
at com.sec.sq.myapp.apis.manager.ThreadManager.doTask(ThreadManager.java:108)
at com.sec.sq.myapp.apis.manager.ThreadManager.doTest(ThreadManager.java:81)
at com.sec.sq.myapp.apis.manager.ThreadManager.run(ThreadManager.java:118)
Caused by: java.io.IOException: error=13, Permission denied
第二,我尝试了原生ndk系统/执行函数,但它也不起作用。
- execl("/系统/bin/sh","/数据/地方/tmp/test.sh", NULL);
: app crash,并且可以看到permission denied error=13.
系统("/系统/bin/sh/数据/地方/tmp/test.sh");
:没有发生任何事情,shell不运行。
有人能帮我找到一种方法,如何在Android应用程序上运行shell命令?
读取该文件有问题。脚本很好。你可以试试这个吗:
chmod u+x /data/local/tmp/test.sh
你也可以通过这个链接。