【发布时间】:2012-10-05 07:36:09
【问题描述】:
我正在创建一个 Android 应用程序,我想知道我的应用程序是否在有根设备上运行。
我在 Google 上进行了挖掘,但连一个可靠的解决方案都想不出来。
以前在 stackoverflow 上提出过类似的问题,但没有任何解决方案。 这些链接中提供的解决方案不适用于我的设备。 甚至 Runtime.exec("su") 也不起作用。
Determining if an Android device is rooted programatically?
Determine if running on a rooted device
有没有办法查出设备是否已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 rooted。 鉴于它是 shell 根的,那么Determine if running on a rooted device 上提供的解决方案至少应该可以工作,但这也不起作用。
【问题讨论】:
-
您能否提供一些有关
Runtime.exec("su")不起作用的相关日志输出?有什么例外吗? -
google play 上有一些应用程序可以帮助您确定您的手机是否已root。让我们看看这里:play.google.com/store/search?q=root+checker&c=apps
-
@ss1271:我已经更新了帖子。我收到异常 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec()。命令:[ su ] 工作目录:null 环境:null
-
@user1746693 是的,谢谢更新,你能不能也发布一些你的代码?似乎您没有传递正确的参数或其他错误。
标签: android