展会信息港展会大全

Android在Shell环境下运行Linux命令
来源:互联网   发布日期:2016-01-14 12:29:59   浏览:1761次  

导读:Android的底层其实linux,所以可以在android shell下运行linux命令,尤其是经过root处理的Android系统,基本上可以通过调用linux命令完全操作手机,下面的RootCmd.Java代码就是实现运行linux外部命令。package ......

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;

}

}

赞助本站

人工智能实验室

相关热词: Shell 环境 运行 Linux 命令

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港