Это то, что я использую:
public static boolean isDeviceRooted () {
boolean ret = false;
String path = null;
Map<String,String> env = System.getenv();
if (env != null && (path = env.get("PATH")) != null) {
setDevicePath(path);
String [] dirs = path.split(":");
for (String dir : dirs){
String suPath = dir + "/" + "su";
File suFile = new File(suPath);
if (suFile != null && suFile.exists()) {
setSuLocation(suPath);
ret = true;
}
}
}
return ret;
}
Теоретически, это не будет работать во всех случаях, потому что пользователь может поместить 'su' в нестандартное местоположение, которое не находится в PATH, но практически, если он это сделает, другие приложения, которым нужно знать, где находится «su», тоже не найдут его, поэтому цель рутирования будет побеждена.