9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > android java如何執(zhí)行l(wèi)inux命令

android java如何執(zhí)行l(wèi)inux命令

時(shí)間: 春健736 分享

android java如何執(zhí)行l(wèi)inux命令

  android java如何執(zhí)行l(wèi)inux命令?android的程序基于java開發(fā),當(dāng)我們接上調(diào)試器,執(zhí)行adb shell,就可以執(zhí)行l(wèi)inux命令,下面跟著學(xué)習(xí)啦小編來一起來了解下吧。

  android java執(zhí)行l(wèi)inux命令方法

  通常有很多命令可以通過串口終端輸入,得到結(jié)果,在程序中,通常我們需要得到某些命令的結(jié)果,在代碼中執(zhí)行命令,并將結(jié)果返回。

  有兩個(gè)類:CommandHelper.java和CommandResult.java 第一個(gè)類用于處理命令,第二個(gè)則用于返回一個(gè)結(jié)果

  package com.example.task_aidl;

  import java.io.BufferedReader;

  import java.io.IOException;

  import java.io.InputStreamReader;

  public class CommandHelper {

  //default time out, in millseconds

  public static int DEFAULT_TIMEOUT;

  public static final int DEFAULT_INTERVAL = 1000;

  public static long START;

  public static CommandResult exec(String command) throws IOException, InterruptedException {

  Process process = Runtime.getRuntime().exec(command);//創(chuàng)建一個(gè)字進(jìn)程,并保存在process對(duì)象中

  CommandResult commandResult = wait(process);

  if (process != null) {

  process.destroy();

  }

  return commandResult;

  }

  private static boolean isOverTime() {

  return System.currentTimeMillis() - START >= DEFAULT_TIMEOUT;

  }

  private static CommandResult wait(Process process) throws InterruptedException, IOException {

  BufferedReader errorStreamReader = null;

  BufferedReader inputStreamReader = null;

  try {

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

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

  //timeout control

  START = System.currentTimeMillis();

  boolean isFinished = false;

  for (;;) {

  if (isOverTime()) {

  CommandResult result = new CommandResult();

  result.setExitValue(CommandResult.EXIT_VALUE_TIMEOUT);

  result.setOutput("Command process timeout");

  return result;

  }

  if (isFinished) {

  CommandResult result = new CommandResult();

  result.setExitValue(process.waitFor()); //process.waitFor() 表示 等這條語句執(zhí)行完后再往下執(zhí)行

  //parse error info

  if (errorStreamReader.ready()) {

  StringBuilder buffer = new StringBuilder();

  String line;

  while ((line = errorStreamReader.readLine()) != null) {

  buffer.append(line);

  }

  result.setError(buffer.toString());

  }

  //parse info

  if (inputStreamReader.ready()) {

  StringBuilder buffer = new StringBuilder();

  String line;

  while ((line = inputStreamReader.readLine()) != null) {

  buffer.append(line);

  }

  result.setOutput(buffer.toString());

  }

  return result;

  }

  try {

  isFinished = true;

  process.exitValue();

  } catch (IllegalThreadStateException e) {

  // process hasn't finished yet

  isFinished = false;

  Thread.sleep(DEFAULT_INTERVAL);

  }

  }

  } finally {

  if (errorStreamReader != null) {

  try {

  errorStreamReader.close();

  } catch (IOException e) {

  }

  }

  if (inputStreamReader != null) {

  try {

  inputStreamReader.close();

  } catch (IOException e) {

  }

  }

  }

  }

  }

  ------------------------------------------------------------------------------

  package com.example.task_aidl;

  public class CommandResult {

  public static final int EXIT_VALUE_TIMEOUT=-1;

  private String output;

  void setOutput(String error) {

  output=error;

  }

  String getOutput(){

  return output;

  }

  int exitValue;

  void setExitValue(int value) {

  exitValue=value;

  }

  int getExitValue(){

  return exitValue;

  }

  private String error;

  public String getError() {

  return error;

  }

  public void setError(String error) {

  this.error = error;

  }

  }

  ------------------------------------------------------------

  簡單的調(diào)用: 殺掉一個(gè)進(jìn)程 kill -9 PID

  @Override

  public String killProc(String PID) throws RemoteException {

  // TODO Auto-generated method stub

  String cmd = "kill -9 "+PID;

  String reply = "";

  Log.v("cmd",cmd);

  try {

  CommandHelper.DEFAULT_TIMEOUT = 5000;

  CommandResult result = CommandHelper.exec(cmd);

  if (result != null) {

  if(result.getError()!=null)

  {

  Log.v("Output","Error:" + result.getError());

  reply = result.getError();

  }

  if(result.getOutput()!=null)

  {

  Log.v("Output","Output:" + result.getOutput());

  reply = result.getOutput();

  }

  }

  } catch (IOException ex) {

  Log.v("Output","IOException:" + ex.getLocalizedMessage());

  } catch (InterruptedException ex) {

  Log.v("Output","InterruptedException:" + ex.getLocalizedMessage());

  }

  return reply;

  }

android java如何執(zhí)行l(wèi)inux命令相關(guān)文章:

1.android js調(diào)用java方法

2.linux下啟動(dòng)java程序的通用腳本介紹

3.Linux常用網(wǎng)絡(luò)服務(wù)端口

4.初學(xué)者需要學(xué)會(huì)Linux的命令

5.Linux怎么搭建Android開發(fā)環(huán)境

6.如何解決Linux系統(tǒng)下的Java進(jìn)程消失

1368964 主站蜘蛛池模板: 国产精品一区二区三区av| 日韩黄色av一区二区三区| 久久精品国产亚洲αv忘忧草| 成人嫩草研究院久久久精品| 亚洲国产欧美在线人成大黄瓜| 国产一区二区高潮视频| 国产精品久久人人做人人爽| 日韩国产精品无码一区二区三区| 国产自拍一区二区三区在线| 国产成人女人在线观看| 国产成人一区二区三区免费| 精品一区二区不卡免费| 亚洲暴爽av天天爽日日碰| 怡春院久久国语视频免费| 亚洲男人成人性天堂网站| 久久久久免费看成人影片| 亚洲国产综合精品2020| 亚洲高清WWW色好看美女| 亚洲精品无amm毛片| 中文字幕一区二区三区麻豆| 四虎国产精品永久在线| 久久精品国产亚洲不AV麻豆| 国产高在线精品亚洲三区| 巨熟乳波霸若妻在线播放| 亚洲中文字幕精品一区二区三区| 成人一区二区三区在线午夜| 亚洲欧洲日韩国内高清| 国产一区二区a毛片色欲| 日本人妻巨大乳挤奶水免费 | 中文字幕久久精品波多野结| 亚洲av无码专区在线亚| 国产精品一区二区三区日韩| 中文无码乱人伦中文视频在线| 116美女极品a级毛片| 香港特级三A毛片免费观看| 思思99热精品在线| 亚洲综合中文字幕第一页| 久久亚洲国产精品久久| 国内自拍网红在线综合一区| 国产偷窥熟女精品视频大全 | 丰满人妻一区二区三区高清精品|