我创建了一个检查安卓手机是否已经root的方法,如下所示:
public int checkrootcommand(String string) {
// TODO Auto-generated method stub
Process exec;
try {
exec = Runtime.getRuntime().exec(new String[]{"su","-c"});
final OutputStreamWriter out = new OutputStreamWriter(exec.getOutputStream());
out.write("exit");
out.flush();
Log.i(SUPER_USER_COMMAND, "su command executed successfully");
return 0; // returns zero when the command is executed successfully
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 1; //returns one when the command execution fails
}
但问题在于,当checkrootcommand()方法首次执行时,它能够完美地工作。但是当再次调用相同的方法时,超级用户会话仍然在运行。是否有任何方法可以在该方法执行后结束超级用户会话?
id
命令来验证。例如,运行su -c id
,验证命令是否成功执行并且输出包含uid=0
,即root用户的UID。 - VPZ