方法
コード内で adb shell コマンドを実行することは、主にRuntime.getRuntime().exec
メソッドを通じてコマンドを実行することであり、プロセスの入力ストリームから結果を取得できます。
サンプルコード
メソッドの例は次のとおりです。
fun actionAdbShell(cmd: String) {
var s = StringBuilder()
try {
var process: Process = Runtime.getRuntime().exec(" $cmd")
var inputStream = process.inputStream
var bufferedReader = BufferedReader(InputStreamReader(inputStream))
try {
process.waitFor()
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
var line: String? = bufferedReader.readLine()
while (line != null) {
s.append(line).append("\n");
line = bufferedReader.readLine()
}
inputStream.close()
bufferedReader.close()
} catch (e: Exception) {
e.printStackTrace()
LogUtil.d("异常信息:" + e.message)
}
LogUtil.d("执行结果:$s")
}
たとえば、デバイスの属性情報を表示するためのテストでは、呼び出しは次のようになります。
AdbUtil.actionAdbShell("getprop")
出力部分の結果は次のとおりです。
[DEVICE_PROVISIONED]: [1]
[aaudio.hw_burst_min_usec]: [2000]
[aaudio.mmap_exclusive_policy]: [2]
[aaudio.mmap_policy]: [2]
[af.fast_track_multiplier]: [1]
[audio.deep_buffer.media]: [true]
[audio.offload.buffer.size.kb]: [32]
[audio.offload.gapless.enabled]: [true]
[audio.offload.min.duration.secs]: [30]
[audio.offload.video]: [true]
[audio.sys.mute.latency.factor]: [2]
[audio.sys.noisy.broadcast.delay]: [500]
[audio.sys.offload.pstimeout.secs]: [3]
[audio.sys.routing.latency]: [0]
[audio_para_version]: [J19S-Audiopara-cn-V01-20200918]
adb shell getprop
と同じように、対応する命令の実行結果を表示できることがわかります。