我的应用请求SU访问类似这样的内容:
Process p = null;
p = Runtime.getRuntime().exec("su");
提示用户允许或拒绝访问,但我的应用程序继续执行下一行代码,同时屏幕上显示选项。如何让应用程序等到用户在提示符下做出选择?
答案 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调用将具有适当的访问权限。