怎么用代码判断android手机是否开启了ROOT 权限

 我来答
huanglenzhi
2016-01-17 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517201
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
public class TestRoot {
protected boolean isRoot() {
boolean IsRoot = false;
try {
if (new File("/system/bin/su").exists() || new File("/system/xbin/su").exists()) {
IsRoot = true;
} else {
IsRoot = true;
}
} catch (Exception e) {

}
Log.i("info","isRoot******"+IsRoot);
return IsRoot;
}
}

上面那个是随手写的,你随便看看(其实太简单了,考虑得不周全),下面给个大神的:

/**
* @author Kevin Kowalewski
*
*/
public class Root {

private static String LOG_TAG = Root.class.getName();

public boolean isDeviceRooted() {
if (checkRootMethod1()){return true;}
if (checkRootMethod2()){return true;}
if (checkRootMethod3()){return true;}
return false;
}

public boolean checkRootMethod1(){
String buildTags = android.os.Build.TAGS;

if (buildTags != null && buildTags.contains("test-keys")) {
return true;
}
return false;
}

public boolean checkRootMethod2(){
try {
File file = new File("/system/app/Superuser.apk");
if (file.exists()) {
return true;
}
} catch (Exception e) { }

return false;
}

public boolean checkRootMethod3() {
if (new ExecShell().executeCommand(SHELL_CMD.check_su_binary) != null){
return true;
}else{
return false;
}
}
}

/**
* @author Kevin Kowalewski
*
*/
public class ExecShell {

private static String LOG_TAG = ExecShell.class.getName();

public static enum SHELL_CMD {
check_su_binary(new String[] {"/system/xbin/which","su"}),
;

String[] command;

SHELL_CMD(String[] command){
this.command = command;
}
}

public ArrayList<string> executeCommand(SHELL_CMD shellCmd){
String line = null;
ArrayList<string> fullResponse = new ArrayList<string>();
Process localProcess = null;

try {
localProcess = Runtime.getRuntime().exec(shellCmd.command);
} catch (Exception e) {
return null;
//e.printStackTrace();
}

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(localProcess.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(localProcess.getInputStream()));

try {
while ((line = in.readLine()) != null) {
Log.d(LOG_TAG, "--> Line received: " + line);
fullResponse.add(line);
}
} catch (Exception e) {
e.printStackTrace();
}

Log.d(LOG_TAG, "--> Full response was: " + fullResponse);

return fullResponse;
}
}

建议看仔细看下面那个吧~
千锋教育
2016-01-23 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
【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();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄山赵子龙也
2016-01-17 · TA获得超过626个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:112万
展开全部
下载终端模拟器,在里面输入"su"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诗凝2M
2016-01-17 · TA获得超过348个赞
知道小有建树答主
回答量:432
采纳率:0%
帮助的人:220万
展开全部
只要现在一个2进制,root软件差看下就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式