有没有人能说,是否可以通过我的android应用程序执行< code>adb命令。如果有可能执行,如何实现?
我在寻找一个不同的查询时看到了这篇文章,但我以前专门在android上使用过< code>input,所以我想澄清一下这个问题。
原因是
Runtime.getRuntime().exec("adb shell input keyevent 120");
不起作用,是因为你没有去除
adb shell
<code>ADB</code>部分仅用于您的计算机,如果您安装了错误的ADB,该命令实际上是指向ADB的路径。exe文件,如下所示
C:\XXXX\ADB Files\adb.exe shell
或
C:\XXXX\ADB Files\ADB shell
< code>shell部分告诉您计算机上的ADB程序访问设备的shell,因此您的设备也不知道shell是什么...
使用sh/path/to/commandList。sh</code>将执行commandList中列出的命令。sh,因为它是一个shell脚本(windows上的.batch文件类似)
要使用的命令是
Runtime.getRuntime().exec("input keyevent 120");
然而,这将导致环境为空,工作目录为空,您可以通过将命令写入shell脚本(.sh文件),然后使用
Runtime.getRuntime().exec("sh path/to/shellScript.sh");
有时
sh
是不需要的,但我使用它只是为了以防万一。
我希望这至少澄清了一些事情:)
普通Android应用对通过< code>adb启动的进程具有不同的权限,例如,通过< code>adb启动的进程被允许捕捉屏幕,而普通应用则不被允许。因此,您可以通过< code>Runtime.getRuntime()从应用程序中执行命令。exec(),但是它们不会拥有与您从< code>adb shell执行时相同的权限。
你可以这样做:
Process process = Runtime.getRuntime().exec("your command");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
别忘了用try and catch语句包围它。
编辑:
@Phix是对的,ProcessBuilder更适合使用。
我有一个部分扎根的Android设备。所谓部分root,是指我只能通过ADB运行root命令。我已经想出了如何在设备本身的终端模拟器中本地运行这些命令。我的问题是,我将如何着手编写Android应用程序的代码,从按钮按钮执行一个ADB命令(或多个命令)?我找不到任何解释如何通过应用程序界面运行直接ADB命令的东西。只是为了澄清,任何涉及“su”的东西都不会在这个设备上工作。它只接受ADB输入进行根
问题内容: 我正在使用的程序使用ADB(Android调试桥)将文件发送到手机: 我希望程序等待ADB完成传输,但是ADB作为守护程序运行,因此永远无法完成。但是该程序仍在继续运行,并且某种程度上文件没有发送到我的手机(日志中没有例外)。当我从控制台运行命令时,它可以正常工作。 我究竟做错了什么?如何正确通过ADB发送文件? 注意:这将不起作用,因为ADB守护程序会将 所有输出 写入系统标准输出。
我明白在Android(8.0)启动器图标上的通知徽章会在收到通知时自动显示。不幸的是,一旦他们打开或取消通知,徽章将被删除。我想知道的是,应用程序本身是否可以直接告诉系统显示徽章?我想显示它时,他们有未读消息内的应用程序。 我知道Android的一些第三方启动器和制造商变体确实提供了额外的徽章功能,然而,我指的是香草Android和股票启动器。 非常感谢。
当我从Android Studio或从命令行安装应用程序时,应用程序总是在调试模式下启动,即使手机没有连接到电脑。所以我看到对话框"等待调试器附加"和应用程序不启动,直到我附加调试器。有什么方法可以禁止这种行为吗? 我的手机是Nexus 5,Android 6.0.1 ADB 1.0.32版,运行在Windows 7上
我目前正在运行一个bash脚本,使用curl在Github上自动创建一个远程存储库。我想知道是否有任何方法也可以删除命令行上的远程Github存储库。任何帮助将不胜感激!