Android在Shell环境下运行Linux命令

Android的底层其实linux,所以可以在android 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 ;
 
}
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值