java - 在 Android 上运行 shell 命令不会返回任何内容
问题描述
我一直在尝试获取命令的输出好几个小时,但没有结果。有这个代码:
val byteArry = ByteArray(1024)
var Holder: String = ""
try {
val processBuilder = ProcessBuilder("/system/bin/ls")
val process = processBuilder.start()
val inputStream = process.getInputStream()
while (inputStream.read(byteArry) !== -1) {
Holder += String(byteArry)
}
inputStream.close()
} catch (ex: IOException) {
ex.printStackTrace()
}
println("Output: " + Holder)
我正在尝试使用不同的(kotlin 和 java)方法从任何命令接收一些输出,但我什么也没收到。也没有错误。使用 Android Studio 中的文件资源管理器,我可以看到 ls 位于该位置。
解决方案
我猜有一个错误发生。您可以通过设置ProcessBuilder.redirectErrorStream
(之前start()
)将其设置为给定值或通过调用inputStream
单独获取错误来检查它。InputStream
Process.getErrorStream()
目前尚不清楚您要达到什么目标,因此很难给您一个明确的答案。您当前的代码只是试图运行位于/system/bin/ls
(来自工作目录)的进程。如果您实际上是在尝试运行ls
for directory /system/bin/
,那么您将希望将目录作为参数发送到ProcessBuilder
,如下所示:
val processBuilder = ProcessBuilder("ls", "/system/bin/")
推荐阅读
- c# - GoogleOAuth2AuthenticationOptions google+ API 正在关闭
- spring - BCryptPasswordEncoder 如何在 Spring.Security 中工作?
- r - 创建时间序列观察、时间戳和填充值
- triggers - 文档更新与 CouchDB 设计更新冲突
- spring - Spring数据休眠根据方法序列化项目属性
- applescript - 使用 AppleScript 在 Numbers 中设置单元格已损坏
- python - 使用请求登录 Google 并访问 youtube
- font-awesome - 字体真棒 5 个社交媒体图标显示为闪烁!和?
- python - 如何在 HTML 页面上可视化微服务 REST API?
- spring-cloud - 基于配置的路由回退