Skip to content

Instantly share code, notes, and snippets.

@nuryslyrt
Created December 6, 2021 14:12
Show Gist options
  • Save nuryslyrt/f90b82e8de05ec5b7e1b7af7e9daad91 to your computer and use it in GitHub Desktop.
Save nuryslyrt/f90b82e8de05ec5b7e1b7af7e9daad91 to your computer and use it in GitHub Desktop.

Revisions

  1. nuryslyrt created this gist Dec 6, 2021.
    33 changes: 33 additions & 0 deletions rootcheck.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    public class RootUtil {
    public static boolean isDeviceRooted() {
    return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();
    }

    private static boolean checkRootMethod1() {
    String buildTags = android.os.Build.TAGS;
    return buildTags != null && buildTags.contains("test-keys");
    }

    private static boolean checkRootMethod2() {
    String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su",
    "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"};
    for (String path : paths) {
    if (new File(path).exists()) return true;
    }
    return false;
    }

    private static boolean checkRootMethod3() {
    Process process = null;
    try {
    process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });
    BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
    if (in.readLine() != null) return true;
    return false;
    } catch (Throwable t) {
    return false;
    } finally {
    if (process != null) process.destroy();
    }
    }
    }