Execute ADB command from Java program

前端 未结 4 1809
死守一世寂寞
死守一世寂寞 2020-12-09 06:38

The program I\'m working on uses ADB (Android Debug Bridge) to send files to my phone:

for (String s : files)
    String cmd = \"adb -s 0123456789ABCDEF push         


        
4条回答
  •  一整个雨季
    2020-12-09 07:18

    I've solved in this way:

    public class Utils {
        private static final String[] WIN_RUNTIME = { "cmd.exe", "/C" };
        private static final String[] OS_LINUX_RUNTIME = { "/bin/bash", "-l", "-c" };
    
        private Utils() {
        }
    
        private static  T[] concat(T[] first, T[] second) {
            T[] result = Arrays.copyOf(first, first.length + second.length);
            System.arraycopy(second, 0, result, first.length, second.length);
            return result;
        }
    
        public static List runProcess(boolean isWin, String... command) {
            System.out.print("command to run: ");
            for (String s : command) {
                System.out.print(s);
            }
            System.out.print("\n");
            String[] allCommand = null;
            try {
                if (isWin) {
                    allCommand = concat(WIN_RUNTIME, command);
                } else {
                    allCommand = concat(OS_LINUX_RUNTIME, command);
                }
                ProcessBuilder pb = new ProcessBuilder(allCommand);
                pb.redirectErrorStream(true);
                Process p = pb.start();
                p.waitFor();
                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String _temp = null;
                List line = new ArrayList();
                while ((_temp = in.readLine()) != null) {
                    System.out.println("temp line: " + _temp);
                    line.add(_temp);
                }
                System.out.println("result after command: " + line);
                return line;
    
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

    If you don't need env variables in your .bash_profile cut "-l" parameter.

    I have a Mac but it should work on Linux also.

提交回复
热议问题