当前位置: 首页 > news >正文

java用adb传指定文件到mumu模拟器的指定路径

请注意,这里使用了exec交互,这样有好处。
使用mumu模拟器遇到的第一个问题:
adb devices
查询不到设备,为什么呢,官方给了说明,使用 adb connect 127.0.0.1:7555 才可以
那么问题来了如果我们直接执行
adb connect 127.0.0.1:7555 以后再执行 adb push C:\Users\xiaobai\Desktop\zjy.db /storage/emulated/0/xxzhglpt/wjk 再cmd中是没有问题的,因为再cmd中相当于是一个进程。
当我们再java代码中运行时,相当于打开了两个cmd,一个运行 adb connect 127.0.0.1:7555 ,一个运行
adb push C:\Users\xiaobai\Desktop\zjy.db 这样时不行的。他们两个必须关联起来。
所以用了以下的命令,下面时关联的。

package com.xiaobai.rainbowknowledgepay.until;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class ADBCommand {public static void main(String[] args) {String connectCommand = "adb connect 127.0.0.1:7555";String pushCommand = "adb push C:\\Users\\xiaobai\\Desktop\\zjy.db /storage/emulated/0/xxzhglpt/wjk";String connectResult = executeCommand(connectCommand);System.out.println("连接模拟器结果:" + connectResult);String pushResult = executeCommand(pushCommand);System.out.println("推送文件结果:" + pushResult);}private static String executeCommand(String command) {StringBuilder result = new StringBuilder();try {Process process = Runtime.getRuntime().exec(command);BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {result.append(line).append("\n");}// 读取标准错误流BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));String errorLine;while ((errorLine = errorReader.readLine()) != null) {result.append(errorLine).append("\n");}reader.close();errorReader.close();process.waitFor();} catch (IOException | InterruptedException e) {e.printStackTrace();}return result.toString();}
}

相关文章:

  • 分享88个工作总结PPT,总有一款适合您
  • 后端神器!代码写完直接调试!
  • Vue+elementui 纯前端实现Excel导入导出功能(区分表头标题)
  • 费解的开关
  • CentOS和Ubuntu命令行方式配置静态IP
  • 企业上ERP的节奏商讨
  • 新手必看的Facebook广告投放基础思路
  • 贝锐向日葵亮相阿里云“云栖大会”:独创专利算法赋能全新云桌面
  • J2EE项目部署与发布(Linux版本)->jdktomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署
  • 【考研数学】概率论与数理统计 —— 第八章 | 假设检验
  • 链表的介绍
  • Restful风格与Wesocket之间的关联
  • IT技术发展背景下的就业趋势:哪个领域最受欢迎?
  • 【vue3】样式穿透、完整新特性、动态css、css-module
  • 多输入多输出 | Matlab实现k-means-ELM(k均值聚类结合极限学习机)多输入多输出组合预测
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Akka系列(七):Actor持久化之Akka persistence
  • AngularJS指令开发(1)——参数详解
  • CAP 一致性协议及应用解析
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript设计模式系列一:工厂模式
  • php中curl和soap方式请求服务超时问题
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React中的“虫洞”——Context
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Windows Containers 大冒险: 容器网络
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 来,膜拜下android roadmap,强大的执行力
  • 深入浅出webpack学习(1)--核心概念
  • 一个完整Java Web项目背后的密码
  • 《天龙八部3D》Unity技术方案揭秘
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​ArcGIS Pro 如何批量删除字段
  • ​业务双活的数据切换思路设计(下)
  • # Apache SeaTunnel 究竟是什么?
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $.ajax()参数及用法
  • $NOIp2018$劝退记
  • (9)STL算法之逆转旋转
  • (day6) 319. 灯泡开关
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (六)c52学习之旅-独立按键
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转)关于pipe()的详细解析
  • .naturalWidth 和naturalHeight属性,
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net6+aspose.words导出word并转pdf
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • ::前边啥也没有
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @Query中countQuery的介绍
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149