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;
}
}
分享到:
相关推荐
- **示例:** 运行 `top` 命令: ```bash top ``` **磁盘使用情况命令 (df):** - **功能:** `df` 命令用于查看文件系统的磁盘使用情况。 - **用法:** `df [参数]` - `[参数]`: - `[-h]`: 以人类可读的格式显示...
1. 关闭Linux系统:在给出的题目中,`halt`命令用于关闭Linux系统而不重新启动。这是停止计算机的一种方法,确保所有进程都已终止,并且系统安全地关闭。 2. IP到MAC地址转换:`arp`命令用于实现从IP地址到以太网...
注: 1、以下测试在ubuntu 9.10上进行,...简单解释:shell命令执行时的环境变量默认是 $PATH ,即到 $PATH 下找命令该如何运行,shell常用的命令在 $PATH 都有,所以可以直接运行。用户新建的文件所在的路径不在 $PA
这是我自己之前学习的linux时的入门学习的例子大全(非网上转载),其中包括了:文件读写、管道、信号量、消息队列、线程/进程、互斥锁、socket通信……等29个案例,还有自己曾经用过的暗文密码(即输入密码时显示*,...
在本地系统上,可以运行`ssh-keygen`命令来生成默认为2048位的RSA密钥对。在执行该命令时,系统可能会提示输入一个密码或passphrase,这有助于增加额外的安全层。如果你设置了密码,每次SSH登录都需要输入此密码。...
这些都是Linux系统管理中常用的基本命令,对于熟悉Linux操作的用户来说至关重要。 6. 对文章的转述及尊重原创: 文章最后提到了作者转载了青龙一笑的文章,并表达了尊重原创的态度。这不仅体现了网络内容共享的道德...
2. **准备环境**:你需要一台运行Linux的机器,最好是root用户,因为编译内核需要修改系统文件。将源代码解压缩到`/usr/src`目录下,通常创建一个子目录,如`/usr/src/linux-<kernel_version>`。 3. **清理旧配置**...
知识点: atd 是一个用户用 At 命令调度的任务服务,能够在系统负荷比较低时运行批处理任务,提高系统的自动化管理能力。 6. autofs:自动转载文件系统的服务。 知识点: autofs 是一个自动转载文件系统的服务,...
在这种模式下,可以使用 Linux Rescue 光盘或硬盘安装的方式进入安装界面,然后使用 shell 命令来修复系统。 1. 下载 Linux Rescue 光盘 首先,需要下载 Linux Rescue 光盘的镜像文件,从 ...
1. AOP(面向切面编程):通过`advice`命令,可以在运行时动态插入代码,实现AOP功能。 2. OQL(Object Query Language):Arthas内置的查询语言,用于查询对象、类、集合等信息。 3. AScript:支持JavaScript和...
要将命令放到后台运行,可以在命令末尾添加`&`符号。例如,`sleep 10 &`会让`sleep`命令在后台等待10秒。 ### Chapter 3: SSH Commands and Tips **Hack 28. Debug SSH Client Session** 当遇到SSH连接问题时,...
在 Linux 系统中,可以使用ntsysv命令来启用或关闭系统服务。例如,在 Red Flag 3.0 中,可以使用ntsysv命令来打开图1所示的窗口。在这个窗口中,可以启用或关闭每一项系统服务。将不需要的服务和进程前面的去掉,...
任何未经过书面许可的复制、转载行为都将受到法律追究。 - **公司简介**: 上海驻云信息科技有限公司是一家专业的公有云架构技术及咨询服务提供商,专注于为企业提供全面的云解决方案和技术支持。公司具备强大的技术...
MobaXterm 可以开启多个终端视窗,以最新的 X 服务器为基础的 X.Org,可以轻松地来试用 Unix/Linux 上的 GNU Unix 命令。这样一来,我们可以不用安装虚拟机来试用虚拟环境,然后只要通过 MobaXterm 就可以使用大多数...
在监控Linux系统服务方面,Zabbix能够自动化发现系统服务状态、收集服务运行数据并发出警报。以下将详细阐述zabbix监控Linux系统服务的流程。 首先,监控流程的核心前提条件是已经搭建好zabbix环境,这包括zabbix...
本文档遵循 GNU Free Documentation License(GNU 自由文档许可证),允许任意转载,但需保持文档的完整性。若有任何修改,请务必通知原作者。 #### 2. 下载 为了构建集群,首先需要下载以下组件: - **Tomcat**:...