http接口请求操作adb命令

匿名 (未验证) 提交于 2019-12-03 00:22:01

最近在做web端测试的时候突发奇想,想到了用接口的形式操作adb。
原理如下:本地写个servlet,servlet写一个get请求的接口,当有用户访问时返回当前电脑连接的设备

效果如下

代码如下:

package com.servlet;  import java.io.IOException; import java.io.PrintWriter; import java.util.List;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import com.dao.TestResultDaoImpl; import com.entity.TestResult; import com.google.gson.Gson; import com.util.CmdUtils;  /**  * Servlet implementation class TestAdd  */ public class GetDevicesServlet extends HttpServlet {     private static final long serialVersionUID = 1L;             /**      * @see HttpServlet#HttpServlet()      */     public GetDevicesServlet() {         super();         // TODO Auto-generated constructor stub     }      /**      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)      */     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         // TODO Auto-generated method stub             CmdUtils cmdUtils=new CmdUtils();                       List devices=cmdUtils.excuteCmd1("adb devices");                               //将list转化成json             Gson gson = new Gson();             String json = gson.toJson(devices);              // 输出到界面             System.out.println(json);             response.setContentType("text/plain");             response.setCharacterEncoding("gb2312");             PrintWriter out = new PrintWriter(response.getOutputStream());             out.print(json);             out.flush();              }      /**      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)      */     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         // TODO Auto-generated method stub         doGet(request, response);     }  } 
工具类
package com.util;  import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List;  public class CmdUtils {     List<String>resultList=new ArrayList<String>();     public List<String> excuteCmd(String command){         //String command="adb devices";         String line = null;         StringBuilder sb = new StringBuilder();         Runtime runtime = Runtime.getRuntime();         try {             Process process = runtime.exec(command);             BufferedReader  bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));             while ((line = bufferedReader.readLine()) != null) {                 resultList.add(line);                          }         } catch (IOException e) {                          e.printStackTrace();         }         return resultList;              }     public List<String> excuteCmd1(String command){         //String command="adb devices";         String line = null;         StringBuilder sb = new StringBuilder();         Runtime runtime = Runtime.getRuntime();         try {             Process process = runtime.exec(command);             BufferedReader  bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));             while ((line = bufferedReader.readLine()) != null) {                                  if(line.contains("device")){                     if(!line.contains("devices")){                         String deviceId=line.substring(0, line.indexOf("device")-1);                         resultList.add(deviceId);                     }                 }                          }         } catch (IOException e) {                          e.printStackTrace();         }         return resultList;              }  }


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!