【问题标题】:Creating a java program to run ADB commands [duplicate]创建一个java程序来运行ADB命令[重复]
【发布时间】:2017-03-02 12:03:08
【问题描述】:

我目前正在尝试在 Netbeans 中编写一个程序,该程序允许我单击几个按钮来执行不同的操作。

首先我需要一个按钮来将文件从智能手表上的某个位置复制到同一设备(SD 卡)上的新目录

然后我希望编写一个脚本/代码来将数据从 SDcard 目录提取到主机,最后一步是查看 Windows PC 上的 .db 文件。

简单地说,我需要编写一个程序来将一个数据库文件从一个位置复制到一个新目录,然后我需要将它解压到它所插入的主机上。

对不起,如果这看起来有点脱节,但我正在寻求帮助,将它写成

如果您需要任何进一步的信息,请告诉我。

编辑-

我知道我需要使用 -

cat /data/data/com.google.android.gms/databases/node.db > /sdcard/node.db

这会将我需要的 db 文件复制到可以使用 ADB 从中提取它的位置。

其次我需要使用-

Adb pull /sdcard/node db

这会将节点数据库文件保存到SDK所在的目录。

我只是不确定如何将它包含在我的 Java 程序中的 ONCLICK 按钮上。

【问题讨论】:

  • 我们需要看看你的尝试。
  • 我还没有尝试用Java编写它。
  • 为什么使用cat而不是cp来复制你的数据库文件?是什么阻止您从 Java 应用程序调用外部命令?
  • 我发现当我尝试使用 cp 时由于某种原因它不起作用,所以我只是去 cat 查看它的工作原理。我不知道是什么阻止我这样做,我只是不知道如何开始:(

标签: java android netbeans adb


【解决方案1】:

运行shell命令的基本代码:

Process p = Runtime.getRuntime().exec( "ls -l" );
p.waitFor();

BufferedReader reader = new BufferedReader( new InputStreamReader( p.getInputStream() ) );

String line = "";
while ((line = reader.readLine())!= null) {
    System.out.println( "line : " + line);
}

你也可以像这样传递参数:

Process p = Runtime.getRuntime().exec(new String[]{ "ls", "-l",} );

【讨论】:

    【解决方案2】:

    您也可以尝试使用Apache Commons Exec library。查看教程here.

    String line = "calc.exe";
    CommandLine cmdLine = CommandLine.parse(line);
    DefaultExecutor executor = new DefaultExecutor();
    int exitValue = executor.execute(cmdLine);
    

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 2011-04-05
      • 2018-09-19
      • 2014-01-28
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多