Android学习杂记(三):在Android中使用Runtime执行Linux命令

今天在工作时遇到需要使设备进入休眠的状态,在命令台中的操作为echo mem > /sys/power/state,看到此时设备进入休眠状态,说明该命令没有问题,那么需要使用Java的Runtime方法进行命令的调用。

已知实现命令调用的方法为Runtime.exec()方法,但是若我直接调用以下操作:

Process p = Runtime.exec("echo mem > /sys/power/state");

此时返回的Process对象为null,此时调用方法失败,经过一个上午的努力,下午终于找到一个方法可行。具体如下:

String cmd = "echo mem > /sys/power/state";
try
{
  p = Runtime.getRuntime.exec("su");
  DataOutputStream os = new DataOutputStream(p.getOutputStream());
  os.writeBytes(cmd + "\n");
  os.writeBytes("exit\n");
  os.flush();
  p.waitFor();
} catch (Exception){
    e.printStackTrace();
}

运行之后设备顺利进入休眠。

若是想使休眠的设备唤醒,那只需要改变命令为:

echo on > /sye/power/state

就可以了。

注意:此方法需要设备有root权限。

你可能感兴趣的:(Android)