0

我的应用程序请求 SU 访问如下内容:

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

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

4

2 回答 2

2

就这一点而言,我认为它会起作用:

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

它将等待您的流程结束,您还将获得退出代码。

于 2011-10-03T14:38:57.913 回答
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 调用将具有适当的访问权限。

于 2014-04-01T20:22:20.810 回答