可能重复:
确定是否在有根设备上运行
我正在创建一个 Android 应用程序,我想知道我的应用程序是否在有根设备上运行。
我在谷歌上进行了挖掘,但连一个可靠的解决方案都想不出来。
之前在 stackoverflow 上也有人问过类似的问题,但没有任何解决方案。这些链接中提供的解决方案不适用于我的设备。甚至 Runtime.exec("su") 也不起作用。
有没有办法查出设备是否已root?如果我们做不到,谷歌如何找到设备是否已root?
当我执行 Runtime.exec("su") 时,出现异常 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec()。命令:[su] 工作目录:null 环境:null
public static boolean isDeviceRooted_BySu() {
try {
Log.d("BySu", "BySu");
Process p = Runtime.getRuntime().exec("su");
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
我从 ADB shell 中检查过,它给了我一个“#”提示,所以我可以确定该设备至少是 Shell 根的。鉴于它是 shell 根的,那么确定是否在根设备上运行提供的解决方案至少应该可以工作,但这也不起作用。