Initial commit - v1.1.9
This commit is contained in:
46
app/src/main/java/com/example/shiftalarm/RootUtil.kt
Normal file
46
app/src/main/java/com/example/shiftalarm/RootUtil.kt
Normal file
@@ -0,0 +1,46 @@
|
||||
package com.example.shiftalarm
|
||||
|
||||
import java.io.File
|
||||
|
||||
object RootUtil {
|
||||
fun isDeviceRooted(): Boolean {
|
||||
return checkRootMethod1() || checkRootMethod2() || checkRootMethod3()
|
||||
}
|
||||
|
||||
private fun checkRootMethod1(): Boolean {
|
||||
val buildTags = android.os.Build.TAGS
|
||||
return buildTags != null && buildTags.contains("test-keys")
|
||||
}
|
||||
|
||||
private fun checkRootMethod2(): Boolean {
|
||||
val paths = arrayOf(
|
||||
"/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 (path in paths) {
|
||||
if (File(path).exists()) return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private fun checkRootMethod3(): Boolean {
|
||||
var process: Process? = null
|
||||
return try {
|
||||
process = Runtime.getRuntime().exec(arrayOf("/system/xbin/which", "su"))
|
||||
val reader = process.inputStream.bufferedReader()
|
||||
reader.readLine() != null
|
||||
} catch (t: Throwable) {
|
||||
false
|
||||
} finally {
|
||||
process?.destroy()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user