开发者

How can I wait for SU access after request?

开发者 https://www.devze.com 2023-04-10 00:29 出处:网络
My app requests SU access something like this: Process p = null; p = Runtime.getRuntime().exec(\"su\");

My app requests SU access something like this:

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

That prompts the user to allow or deny the access, but my app continues to execute the next line 开发者_运维技巧of code while the choice is displayed on the screen. How can I make the app wait until the user makes a choice at the prompt?


Just to this, I think it will work:

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

it will wait for your process to end, and you'll also get the exit code.


Similar to @jdourlens ans you can try this add this code before your actual "su" call.

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

So if the user selects "Always allow" option, things will work out. I was also trying to read code Chainfires's library as well his website: https://github.com/Chainfire/libsuperuser/blob/master/libsuperuser/src/eu/chainfire/libsuperuser/Shell.java

What I could figure out was to do a Blocking I/O call while the user grants super user access. A good way is to write a temp file, or do some random commands. This is what I tried to do. Call ls with su, which will grants that process su access and then your next su call will have the appropriate access.

0

精彩评论

暂无评论...
验证码 换一张
取 消