http接口请求操作adb命令

2018-03-16  本文已影响280人  早起有虫吃

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

效果如下


image.png

代码如下:

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;
        
    }

}

上一篇下一篇

猜你喜欢

热点阅读