是否可以通过我的Android应用程序来执行ADB命令?(Is it possible to exe

2019-06-21 04:11发布

任何人都可以说,无论是adb命令,可以通过我的Android应用程序来执行。 如果能够执行,如何能实现?

Answer 1:

你可以用这个做到这一点:

Process process = Runtime.getRuntime().exec("your command");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));

不要忘了用try和catch语句围绕着它。

编辑:

@Phix是正确的, 的ProcessBuilder会更好用。



Answer 2:

普通Android应用程序有不同的权限来处理通过启动adb ,例如,通过流程开始adb而正常的应用程序都没有被允许拍摄画面。 所以,你可以通过应用程序执行命令Runtime.getRuntime().exec()但是,如果你已经从一个执行他们不会有相同的权限adb shell



Answer 3:

我碰到这个职位寻找一个不同的查询,但我已经有专门的工作input在Android之前,所以我只想把一些清晰的问题。

之所以

Runtime.getRuntime().exec("adb shell input keyevent 120");    

不工作,是因为你不删除

adb shell   

ADB的部分是只为您的计算机上使用,如果你已经正确安装ADB,命令实际上是在您的计算机上adb.exe文件的路径,像这样

C:\XXXX\ADB Files\adb.exe shell    

要么
C:\ XXXX \ ADB文件\亚行外壳

shell部分告诉您的计算机访问这些设备外壳上的亚行程序,让你的设备就不会知道什么是壳要么...

使用sh /path/to/commandList.sh ,因为它是一个shell脚本将执行commandList.sh列出的commads(Windows上的.batch文件是相似的)

你想使用的命令是

Runtime.getRuntime().exec("input keyevent 120");     

然而,这将导致环境零和工作目录为空,你可以通过写命令shell脚本(sh文件),然后运行该脚本绕过这个

Runtime.getRuntime().exec("sh path/to/shellScript.sh");   

有时, sh是不需要的,我却用它只是柜面。

我希望这将清除至少东西了:)



Answer 4:

在调用Runtime.getRuntime调用ADB壳()。EXEC没有下壳用户运行。 它提供外壳,但具有相同的进程所有者的用户(如u0_a44)。 这是所有的命令没有工作的原因。



Answer 5:

执行

Runtime.getRuntime().exec("adb shell input keyevent 120");

我得到了以下错误:java.io.IOException异常:不能运行程序“亚行”:错误= 13,权限被拒绝。

执行

Runtime.getRuntime().exec("adb shell input keyevent 120");

有没有错误,但在同一时间,我的要求不被加工成采取截图。

我发现这是在早期版本的Android的工作,但后来它被删除。 虽然我不能在这里提供源,为什么它不工作。

希望这可以帮助我这样的人谁是试图用这种方式来采取截图时,应用程序是不是在前台。



文章来源: Is it possible to execute adb commands through my android app?
标签: android adb