import android.util.Log
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
object Shell {
fun shellExec(cmd: String?): StringBuffer? {
val mRuntime = Runtime.getRuntime()
try {
val mProcess = mRuntime.exec(cmd)
val mReader = BufferedReader(InputStreamReader(mProcess.inputStream))
val mRespBuff = StringBuffer()
val buff = CharArray(1024)
var ch = 0
while (mReader.read(buff).also { ch = it } != -1) {
mRespBuff.append(buff, 0, ch)
}
mReader.close()
Log.i("shell", "shellExec: $mRespBuff")
Log.i("shell", "执行命令: " + cmd + "执行成功");
return mRespBuff
} catch (e: IOException) {
e.printStackTrace()
}
return null
}
fun sendCmd(cmd: String){
var p: ProcessBuilder ?= null
var x:Process ?=null;
try {
p = ProcessBuilder("/system/bin/sh", "-c",cmd);
var env = p.environment();
p.redirectErrorStream(true);
x = p.start();
try {
x.waitFor();
} catch ( e: InterruptedException) {
e.printStackTrace();
}
} catch ( e: IOException) {
e.printStackTrace();
}
try {
toStings(x?.inputStream)
} catch ( e : IOException) {
e.printStackTrace();
}
}
private fun toStings(inputStream: InputStream?){
val stringBuilder = StringBuilder()
val bufferedReader = BufferedReader(InputStreamReader(inputStream))
var firstLine = true
var line: String? = null
while (bufferedReader.readLine().also { line = it } != null) {
if (!firstLine) {
stringBuilder.append(System.getProperty("line.separator"))
} else {
firstLine = false
}
stringBuilder.append(line)
}
}
}