您的位置:首页 > 运维架构 > Linux

Android执行Linux命令的方法

2016-05-17 11:08 459 查看
一开始使用的是这样的方法:

Runtime.getRuntime().exec("echo default-on > /sys/class/leds/firefly:yellow:user/trigger");

后来发现一直出现错误,主要提示:
Working Directory: null Environment: null



java.io.IOException: Permission denied

然后一开始我以为是权限不行,就把APK放到/system/app下,还是提示这样的错误。

我又就尝试了Runtime.getRuntime().exec("ls");发现ls和ps这类在/system/bin下面存在的命令,都是可以正确执行的,而cd,cat这类的bash命令都是提示上面的错误。
辗转反侧终于找到了方法:

String[] cmdline = { "sh", "-c", cmd};
Process p = Runtime.getRuntime().exec("echo default-on > /sys/class/leds/firefly:yellow:user/trigger");

完整的函数贴出来:
// 执行命令
public static String do_exec(String cmd) {
String s = "\n";
try {
String[] cmdline = { "sh", "-c", cmd};
Process p = Runtime.getRuntime().exec(cmdline);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
//PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(p.getOutputStream())), true);
//out.println(cmd);
while ((line = in.readLine()) != null) {
s += line + "\n";
}
in.close();
// out.close();
Log.v(TAG, s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// text.setText(s);
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: