package com.tencent.wstt.gt.log.logcat;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.List;
import android.text.TextUtils;
import com.tencent.wstt.gt.utils.RootUtil;
/**
* Helper functions for running processes.
*/
public class RuntimeHelper {
/**
* Exec the arguments, using root if necessary.
* @param args
*/
public static Process exec(List<String> args) throws IOException {
// since JellyBean, sudo is required to read other apps' logs
if (VersionHelper.getVersionSdkIntCompat() >= VersionHelper.VERSION_JELLYBEAN
&& RootUtil.isRooted()) {
Process process = Runtime.getRuntime().exec("su");
PrintStream outputStream = null;
try {
outputStream = new PrintStream(new BufferedOutputStream(process.getOutputStream(), 8192));
outputStream.println(TextUtils.join(" ", args));
outputStream.flush();
} finally {
if (outputStream != null) {
outputStream.close();
}
}
return process;
}
return Runtime.getRuntime().exec(ArrayUtil.toArray(args, String.class));
}
public static void destroy(Process process) {
// if we're in JellyBean, then we need to kill the process as root, which requires all this
// extra UnixProcess logic
if (VersionHelper.getVersionSdkIntCompat() >= VersionHelper.VERSION_JELLYBEAN
&& RootUtil.isRooted()) {
RootUtil.destroy(process);
} else {
process.destroy();
}
}
}