Ahm*_*mad 26
你可以这样做:
Process process = Runtime.getRuntime().exec("your command");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
Run Code Online (Sandbox Code Playgroud)
不要忘记用try和catch语句包围它.
编辑:
@Phix是对的,ProcessBuilder会更好用.
小智 14
普通的Android应用程序对通过启动的进程具有不同的权限adb
,例如,通过启动的进程adb
被允许捕获屏幕而普通的应用程序则不允许.因此,您可以通过应用程序从您的应用程序执行命令Runtime.getRuntime().exec()
,但它们不具有与您执行的命令相同的权限adb shell
.
小智 5
我在寻找不同的查询时遇到了这篇文章,但我input
之前专门在 Android 上工作过,所以我想澄清一下这个问题。
之所以
Runtime.getRuntime().exec("adb shell input keyevent 120");
Run Code Online (Sandbox Code Playgroud)
不起作用,是因为您没有删除
adb shell
Run Code Online (Sandbox Code Playgroud)
该ADB
部分仅在您的计算机上使用,如果您错误地安装了 ADB,该命令实际上是您计算机上 adb.exe 文件的路径,如下所示
C:\XXXX\ADB Files\adb.exe shell
Run Code Online (Sandbox Code Playgroud)
或
C:\XXXX\ADB Files\adb shell
该shell
部分告诉您计算机上的 ADB 程序访问设备 shell,因此您的设备也不知道 shell 是什么......
使用sh /path/to/commandList.sh
将执行 commandList.sh 中列出的命令,因为它是一个 shell 脚本(Windows 上的 .batch 文件类似)
您要使用的命令是
Runtime.getRuntime().exec("input keyevent 120");
Run Code Online (Sandbox Code Playgroud)
但是,这将导致环境为空且工作目录为空,您可以通过将命令写入 shell 脚本( .sh 文件)然后运行该脚本来绕过此问题
Runtime.getRuntime().exec("sh path/to/shellScript.sh");
Run Code Online (Sandbox Code Playgroud)
有时sh
不需要,但我使用它只是为了以防万一。
我希望这至少能澄清一些事情:)
归档时间: |
|
查看次数: |
47353 次 |
最近记录: |