问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在APK程序里执行linux命令1

发布网友 发布时间:2023-10-14 11:05

我来回答

1个回答

热心网友 时间:2024-12-03 04:37

  Android的底层是Linux内核,因此在shell环境下可以运行Linux命令,尤其是经过root处理的android系统,基本上可以通过调用Linux命令完全控制手机,下面的RootCmd.java代码可以实现运行Linux外部命令。

package my.android.code;
import android.os.Environment;
import dalvik.annotation.Signature;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;
public final class RootCmd
{
  //执行linux命令并且输出结果
  protected static Vector execRootCmd(String paramString)
  {
    Vector localVector = new Vector();
    try
    {
      Process localProcess = Runtime.getRuntime().exec("su ");//经过Root处理的android系统即有su命令
      OutputStream localOutputStream = localProcess.getOutputStream();
      DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
      InputStream localInputStream = localProcess.getInputStream();
      DataInputStream localDataInputStream = new DataInputStream(localInputStream);
      String str1 = String.valueOf(paramString);
      String str2 = str1 + "\n";
      localDataOutputStream.writeBytes(str2);
      localDataOutputStream.flush();
      String str3 = localDataInputStream.readLine();
      localVector.add(str3);
      localDataOutputStream.writeBytes("exit\n");
      localDataOutputStream.flush();
      localProcess.waitFor();
      return localVector;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }
  //执行linux命令但不关注结果输出
  protected static int execRootCmdSilent(String paramString)
  {
    try
    {
      Process localProcess = Runtime.getRuntime().exec("su");
      Object localObject = localProcess.getOutputStream();
      DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream)localObject);
      String str = String.valueOf(paramString);
      localObject = str + "\n";
      localDataOutputStream.writeBytes((String)localObject);
      localDataOutputStream.flush();
      localDataOutputStream.writeBytes("exit\n");
      localDataOutputStream.flush();
      localProcess.waitFor();
      localObject = localProcess.exitValue();
      return localObject;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }
//判断机器Android是否已经root,即是否获取root权限
  protected static boolean haveRoot()
  {
    int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测
    if (i != -1)  return true;
    retrun false;
  }
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年9月走亲访友黄道吉日 2024年9月哪天适合走亲访友 2024年7月5日是走亲访友的黄道吉日吗 2024年7月5日适合走亲访友吗 交强险还需要交车船税吗 测评| 平安家易保(家财险):限商品房,自住版、房东版、租客版 女的23岁去读大学年龄是不是太大了? 请问中国石化怎么操作?23.00元买入的,能继续持有吗?中国石化的股改是怎... 600028我是21元买入的,现已经跌到15元多了,怎么办呀?赔死了!!_百度知 ... 请问600028中国石化现在还可以买吗? ...一个游戏机插在电视上耍的那种小游戏,超级玛丽,冒险岛等,你们还玩... 最难小游戏排行榜(十大最难玩的家庭小游戏) 一个,能同时在两台电脑登陆网页版吗?21 哺乳期宝妈可以生气吗,生气会影响奶水吗1 一个 能同时在两台电脑登陆网页版吗101 一个可以同时在两台电脑上登录吗?9 银行卡签约卡是什么意思?17 微信可以同时在2台电脑上登陆吗1 如何防止微信被盗? 银行卡中什么叫签约啊?14 一个,可以同时登录几台电脑吗?8 银行签约用户是什么意思71 王者荣耀新英雄梦奇多少钱 王者荣耀梦奇 梦见找不到自己的鞋子 昨晚做了个梦 梦见人家说 把你的鞋子放...2 王者荣耀新英雄梦奇多少钱 入梦之灵售价 王者荣耀梦奇上线时间 新英雄梦奇多少钱 有办法申请到位数少的qq号么 梦见妈妈家放满了鞋子,我在整理1 王者荣耀新英雄梦奇多少钱 梦奇价格介绍 梦见把妈妈的鞋在鞋店弄丢了1 王者荣耀的新英雄梦奇要多少钱 梦见别人把妈妈的鞋子放外面我说放家里 求一副带“春”字的对联109 如何在linux命令行模式运行软件32 男女相亲指南11 最懒惰的。(谜语猜生肖)也可以多选 最好请解释,谢谢!(十二生肖鼠牛虎兔... 汽车一般耗油量209 fda认证医用口罩有什么品牌? 有FDA标志 就是医用口罩吗?2 国产十大口罩品牌有哪些?73 医用一次性口罩有哪些牌子好一点5 在美国有登记FDA论证的口罩防护用品供应商有哪些? 春朕中含有春字对联2 医用口罩什么牌子的好516 含春字的对联 含春字的对联大全2 如何留个好印象 女生相亲指南 女生相亲有哪几大注意事项?41 汽车油耗怎么算多少钱一公里24799 想买车了,怎么知道汽车的耗油量?9 相亲指南教我怎么相亲6 我家鱼缸柜子里发现蟑螂怎么办?6 农村水塘里叫“水蟑螂”的虫子,擅长潜水也能飞,到底是益虫还是...4