如何在请求后等待SU访问?

时间:2011-10-03 14:28:44

标签: android su

我的应用请求SU访问类似这样的内容:

Process p = null;
p = Runtime.getRuntime().exec("su");

提示用户允许或拒绝访问,但我的应用程序继续执行下一行代码,同时屏幕上显示选项。如何让应用程序等到用户在提示符下做出选择?

2 个答案:

答案 0 :(得分:2)

对此,我认为它会起作用:

Process p = Runtime.exec("foo");
int exitCode = p.waitFor();

它会等待你的进程结束,你也会得到退出代码。

答案 1 :(得分:0)

与@jdourlens ans类似,您可以尝试在实际“su”调用之前添加此代码。

try
{   
    Process p2 = Runtime.getRuntime().exec("su -c ls");
    int exitCode = p2.waitFor();
}
catch(Exception e2)
{//do something}

因此,如果用户选择“始终允许”选项,那么事情就会成功。 我还试图阅读代码Chainfires的库以及他的网站:https://github.com/Chainfire/libsuperuser/blob/master/libsuperuser/src/eu/chainfire/libsuperuser/Shell.java

我能想到的是在用户授予超级用户访问权限时进行阻止I / O调用。一个好方法是写一个临时文件,或做一些随机命令。 这就是我试图做的事情。使用su调用ls,这将授予该进程su访问权限,然后您的下一个su调用将具有适当的访问权限。