java adb_java基于adb命令对android手机的操作

这个还正在完善中,菜鸟初试,忘大神指点。

把已经写了的一些记录以下

创建以下文件:

d4fc7de76a81679b892203388c78cca8.png

AdbRequest.java

App.java

Device.java

Devices.java

AdbRequest这个文件主要是用作发送adb请求的,app这个文件主要是android手机操作的一些类,device主要是一个设备对象,下面的devices里面有获取设备的方法。

家下来可能要把device和devices合并好一些,现在这样看着总别扭

AdbRequest的源码:

package bony.adb;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.util.ArrayList;

public class AdbRequest {

/**

* adb命令发送

* @author bony

* @param param 发送的命令

* @param isResult 是否有返回值

* @return results 返回值

*/

@SuppressWarnings("unused")

public ArrayList Request(String param,boolean isResult){

//System.out.println("AdbRequest...");

StringBuilder outresult = new StringBuilder();

OutputStream oupt= null;

BufferedWriter outputStream=null;

BufferedReader inputStream = null,errorReader=null;

String result ;

ArrayList results=new ArrayList();

try {

Process process= Runtime.getRuntime().exec(param);

oupt=process.getOutputStream();

outputStream = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));

inputStream = new BufferedReader(new InputStreamReader(process.getInputStream()));

errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

while((result=inputStream.readLine()) != null&&isResult) {

results.add(result.trim());

}

while ((result = errorReader.readLine()) != null&&isResult) {

results.add(result.trim());

}

process.waitFor();

inputStream.close();

errorReader.close();

}catch(Exception e){

System.err.println("AdbRequest"+e.getMessage());

}finally{

if(inputStream!=null)

try {

inputStream.close();

if(errorReader!=null) errorReader.close();

outputStream.close();

} catch (IOException e) {

System.err.println("AdbRequest"+e.getMessage());

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return results;

}

}

App的源码:

package bony.adb;

import java.io.File;

public class App {

String AppPackage=null;

String AppActivity=null;

String AppPath=null;

/**

* 设置App的包名

* @param AppPackageName

*/

AdbRequest request=new AdbRequest();

public void setAppPackage(String AppPackageName){

AppPackage=AppPackageName;

}

/**

* 设置App的主Activity名称

* @param AppActivityName

*/

public void setAppActivity(String AppActivityName){

AppActivity=AppActivityName;

}

/**

* 设置App路径

* @param AppPathName

*/

public void setAppPath(String AppPathName){

AppPath=new File(AppPathName).getAbsolutePath();

}

/**

* 安装App

*/

public void instaApp(){

System.out.println(request.Request("adb install -r "+AppPath, true));

}

/**

* 安装App

*/

public void instaApp(Device device){

request.Request("adb -s "+device.getDeviceId()+" install -r "+AppPath, true);

}

/**

* 启动App

*/

public void runApp(){

request.Request("adb shell am start -n "+AppPackage+"/"+AppActivity, false);

}

/**

* 判断是否当前App

* @return

*/

public boolean isApp(){

boolean flag=true;

request.Request("adb shell am start -n "+AppPackage+"/"+AppActivity, true);

return flag;

}

}

Device的源码:

package bony.adb;

public class Device {

String DEVICENAME=null;

String DEVICEID=null;

/**

* 设置设备名称

* @param DeviceName

*/

public void setDeviceName(String DeviceName){

DEVICENAME=DeviceName;

}

/**

* 获取设备名称

* @return

*/

public String getDeviceName(){

return DEVICENAME;

}

/**

* 设置设备唯一标示码

* @param DeviceId

*/

public void setDeviceId(String DeviceId){

DEVICEID=DeviceId;

}

/**

* 获取设备唯一标示码

* @return

*/

public String getDeviceId(){

return DEVICEID;

}

}

Devices 的源码:

package bony.adb;

import java.util.ArrayList;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class Devices {

//String Device

/**

* 获取设备列表

* @return

*/

public ArrayList getDevice(){

ArrayList devices=new ArrayList();

JSONObject DEVJson=new Devices().getDevicesJSONObject();

if(DEVJson.get("ret").equals("0")){

JSONArray DEV=DEVJson.getJSONArray("device");

for(int i=0;i

Device device=new Device();

device.setDeviceName(DEV.getJSONObject(i).getString("Name"));

device.setDeviceId(DEV.getJSONObject(i).getString("Id"));

devices.add(device);

}

//RunTest();

}

else{

System.err.println(DEVJson.get("message"));

}

return devices;

}

/**

*获取json格式设备信息

* @author 80071482

* @return devices

*/

public JSONObject getDevicesJSONObject(){

System.out.println("getDevice...");

JSONObject Dwevices=new JSONObject();

ArrayList Request=new AdbRequest().Request("adb devices -l",true);

if(Request.size()>2){

Dwevices.put("ret","0");

JSONObject phone=new JSONObject();

JSONArray phones=new JSONArray();

for(int i=1;i

String linestr=Request.get(i);

String name=linestr.substring(linestr.indexOf("device:")+7,linestr.length()).trim();

String Id=linestr.substring(0,linestr.indexOf("device")).trim();

phone.put("Name",name);

phone.put("Id",Id);

phones.add(phone);

//devices.add(Request.get(i).substring(0,23).trim());

}

Dwevices.put("device",phones);

}

else{

Dwevices.put("ret","1");

Dwevices.put("message","List of devices attached");

}

//System.out.println(new JsonTools().format(Dwevices.toString()));//打印设备信息

return Dwevices;

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值