Android执行Linux命令的方法

一开始使用的是这样的方法:

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;
	}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值