Java如何操作Android的adb shell

时间:2025-01-25 14:26:18

Android在操作一些命令的时候需要进入到adb shell,然后才可以执行其他的命令,那么如何做到这一点呢?就要把adb shell按一个Process执行,然后再去操作这个Process的输入和输出流。

代码如下:

这段代码是操作 的

try {

           Process process = ().exec("");

           OutputStream outputStream = ();

           final InputStream inputStream = ();

           new Thread(new Runnable(){

                byte[] cache = new byte[1024];

                public void run() {

                    ("listener started");

                    try {

                        while((cache)!=-1){

                           (new String(cache));

                    }

                    } catch (IOException e) {

                       //(); 

                    }

                }

           }).start();

            (new byte[]{'d','i','r','\n'});

           //inputStream.

           int i = ();

           ("i=" + i);

       } catch (Exception e) {

           ();

       }

 

 这段代码是操作Android  adb shell 的

try {

           Process process = ().exec("adb shell");  //adb shell

           final BufferedWriter outputStream = new BufferedWriter(newOutputStreamWriter(()));

           final BufferedReader inputStream = new BufferedReader(new InputStreamReader(()));

           //这里一定要注意错误流的读取,不然很容易阻塞,得不到你想要的结果,

          final  BufferedReader  errorReader = new BufferedReader(new InputStreamReader(()));

           new Thread(new Runnable() {

               String line;

 

                public void run() {

                   ("listener started");

                    try {

                        while((line=()) != null) {

                           (line);

                       }

                    } catch (IOException e) {

                       //();  

                    }

                }

           }).start();

           new Thread(new Runnable() {

                final BufferedReader br = newBufferedReader(new InputStreamReader());

 

                public void run() {

                   ("writer started");

                    String line;

                    try {

                        while ((line =()) != null) {

                           (line + "\r\n");

                           ();

                        }

                    } catch (IOException e) {

                       //();  

                    }

                }

           }).start();

           int i = ();

           ("i=" + i);

       } catch (Exception e) {

           ();

       }

    }