【发布时间】:2013-05-12 10:56:46
【问题描述】:
我想为 root 手机编写一个 Android 应用程序,其行为方式如下:
我想拥有一个可以向其发出命令的 root shell。所以我想要我的应用程序在启动时请求一个 root shell,然后:
1)如果它获得了外壳(用户授予超级用户权限)应用程序应该继续
2)如果它没有获得它(用户拒绝权限或超级用户请求弹出超时)应用程序应立即终止
现在,在这里阅读另一个问题,我发现您可以使用以下命令请求 root shell:
Process p = Runtime.getRuntime().exec("su");
但是,无论您是否获得许可,这都会立即返回。您可以发出:
p.waitFor();
但是如果用户确实授予了权限,这将永远不会返回,只有在权限被拒绝时才会返回。
我想要一种可靠的方法来获取 su shell 并保留它,并知道我是否真的获得了许可。有什么想法吗?
【问题讨论】:
-
你的进程 p 是你的 root shell,所以它实际上是一件好事,它不会立即结束。
-
是的,但这就是我的观点:我如何等待用户授予或拒绝 root 访问权限并可靠地检查我是否真的获得了 root 访问权限?当我上面发布的第一条指令执行时,无论我是否获得许可,程序都会立即继续执行,甚至不等待权限请求弹出消失。