`
googlelee
  • 浏览: 114273 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

运行linux命令 (转载)

阅读更多
Android运行底层linux外部命令的实现
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;
  }

}
分享到:
评论

相关推荐

    后端、嵌入式等岗位常用Linux命令总结(非常详细,持续更新).pdf

    后端、嵌入式软件开发、嵌入式应用等岗位常用Linux命令总结,非常详细; 在本文中详细整理了本人在嵌入式岗位(后端嵌入式软件开发、嵌入式应用开发)日常工作中常用到的linux指令。其中包括:文件相关操作、系统运行...

    linux下运行程序为什么要用 ./

    注: 1、以下测试在ubuntu 9.10上进行,...简单解释:shell命令执行时的环境变量默认是 $PATH ,即到 $PATH 下找命令该如何运行,shell常用的命令在 $PATH 都有,所以可以直接运行。用户新建的文件所在的路径不在 $PA

    linux入门编程例子大全

    这是我自己之前学习的linux时的入门学习的例子大全(非网上转载),其中包括了:文件读写、管道、信号量、消息队列、线程/进程、互斥锁、socket通信……等29个案例,还有自己曾经用过的暗文密码(即输入密码时显示*,...

    Linux操作系统下各项服务的解释

     6、atd:运行用户用At命令调度的任务。也在系统负荷比较低时运行批处理任务。  7、autofs:当您需要时自动转载文件系统,而当您不需要时自动卸载。  8、bootparamd:该服务允许老的Sun工作站从Linux网络启动,...

    MobaXterm SSH客户端

    MobaXterm 可以开启多个终端视窗,以最新的 X 服务器为基础的 X.Org,可以轻松地来试用 Unix/Linux 上的 GNU Unix 命令。这样一来,我们可以不用安装虚拟机来试用虚拟环境,然后只要通过 MobaXterm 就可以使用大多数...

    Linux_unix_shell第一部分编程(共两部分)

    3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup...

    apk反编译得到源代码

    2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。 输入:apktool d C:***.apk C:***文件夹 (命令行解释:apktool d 要反编译的文件 输出文件夹) 特别注意:你要反编译的文件一定要...

    反编译apk文件工具及使用方法

    2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。 输入: apktool d C:\***.apk C:\***文件夹 (命令行解释:apktool d 要反编译的文件 输出文件夹) 特别注意:你要反编译的...

    示例:学习使用Python和Qt创建桌面应用

    您可以自己在Windows,Mac或Linux上运行每个示例。 您只需要Python3。有关说明,请参见。 这些示例摘自以下书籍: 通过迈克尔·赫尔曼(Michael Herrmann) PyQt官方演示 还包含大量示例文件。 您可以在目录中找到...

    身份证照片自动识别java源码-golangman:golangman是一个帮助具有其他语言开发经验的人快速上手golang的开源项目

    golangman中golang表示语言,man表示linux man命令. 本项目针对具有一定开发经验的开发者,不面向初学者. 如同man命令一样,本项目不能代替官方完整文档,更多的起到了解、帮助与速查的功能. 本项目可任意转载,但必须...

    RABSoft远程服务平台

    主控端为浏览器,不受平台、设备限制,Windows、Linux、MacOS操作系统电子计算机、智能手机、WAP手机、iPod Touch数码播放器、PSP游戏机等网络终端均能使用。平台拥有常用操作(执行、运行、进程管理、关机重启)、...

    samba的编译安装20160615_1154.7z

    samba4.1.6源代码部署及配置 (2014-04-04 09:41:00)转载 2016/6/14 15:23 由于ubuntu14.04.4麒麟版本使用: sudo apt-get install samba安装的samba是:V4.3.9 共享文件时ubuntu上的samba V4.3.9会出错(崩溃)。 ...

    流光4.71 for.zip

    注意:本段关于cracklib的说明转载于[网络工作室] B、Proactive Checking 这个程序能在输入口令时进行一系列的口令检查,这会对避免不安全口令出现于你的系统有帮助作用。它与一般的shadow和NIS(也就是yellow ...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示 程序。 3.我们用File->New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application。 5.下面输入工程名和要保存到的文件夹路径。我们这里的...

Global site tag (gtag.js) - Google Analytics