Android-android中如何通过代码检测是否有root权限

 我来答
桐歌来了
高能答主

推荐于2016-10-11 · 致力于成为全知道最会答题的人
知道大有可为答主
回答量:2.5万
采纳率:94%
帮助的人:3187万
展开全部
【Android】Android 代码判断是否获取ROOT权限
方法比较简单,直接粘贴代码
public synchronized boolean getRootAhth()
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("exit\n");
os.flush();
int exitValue = process.waitFor();
if (exitValue == 0)
{
return true;
} else
{
return false;
}
} catch (Exception e)
{
Log.d("*** DEBUG ***", "Unexpected error - Here is what I know: "
+ e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浙江启扬智能科技有限公司
2023-06-12 广告
Android和ARM、Linux之间存在密切的联系。Android是一种基于Linux内核的嵌入式智能操作系统,它采用了ARM处理器作为其主要处理器架构。Android的内核和许多应用程序都是基于ARM架构编写的,包括处理器和内存管理器。... 点击进入详情页
本回答由浙江启扬智能科技有限公司提供
匿名用户
推荐于2016-06-10
展开全部
封装了一个类,代码如下:

public class ShellCommand {

private Boolean can_su;

public SH sh;

public SH su;

public ShellCommand() {

sh = new SH("sh");

su = new SH("su");

}

public boolean canSU() {

return canSU(false);

}

public boolean canSU(boolean force_check) {

if (can_su == null || force_check) {

CommandResult r = su.runWaitFor("id");

StringBuilder out = new StringBuilder();

if (r.stdout != null)

out.append(r.stdout).append(" ; ");

if (r.stderr != null)

out.append(r.stderr);

can_su = r.success();

}

return can_su;

}

public SH suOrSH() {

return canSU() ? su : sh;

}

public class CommandResult {

public final String stdout;

public final String stderr;

public final Integer exit_value;

CommandResult(Integer exit_value_in, String stdout_in, String stderr_in)

{

exit_value = exit_value_in;

stdout = stdout_in;

stderr = stderr_in;

}

CommandResult(Integer exit_value_in) {

this(exit_value_in, null, null);

}

public boolean success() {

return exit_value != null && exit_value == 0;

}

}

public class SH {

private String SHELL = "sh";

public SH(String SHELL_in) {

SHELL = SHELL_in;

}

public Process run(String s) {

Process process = null;

try {

process = Runtime.getRuntime().exec(SHELL);

DataOutputStream toProcess = new DataOutputStream(process.getOutputStream());

toProcess.writeBytes("exec " + s + "\n");

toProcess.flush();

} catch(Exception e) {

process = null;

}

return process;

}

private String getStreamLines(InputStream is) {

String out = null;

StringBuffer buffer = null;

DataInputStream dis = new DataInputStream(is);

try {

if (dis.available() > 0) {

buffer = new StringBuffer(dis.readLine());

while(dis.available() > 0)

buffer.append("\n").append(dis.readLine());

}

dis.close();

} catch (Exception ex) {

}

if (buffer != null)

out = buffer.toString();

return out;

}

public CommandResult runWaitFor(String s) {

Process process = run(s);

Integer exit_value = null;

String stdout = null;

String stderr = null;

if (process != null) {

try {

exit_value = process.waitFor();

stdout = getStreamLines(process.getInputStream());

stderr = getStreamLines(process.getErrorStream());

} catch(InterruptedException e) {

} catch(NullPointerException e) {

}

}

return new CommandResult(exit_value, stdout, stderr);

}

}

}
通过return new ShellCommand().canSU()即可获得。
注意这个方法最好放在异步中做,因为不同的机器检查时间不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式