mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-12-31 07:58:58 +00:00
Added device info card
This commit is contained in:
@@ -121,6 +121,7 @@ object Config : PreferenceModel, DBConfig {
|
||||
var suReAuth by preference(Key.SU_REAUTH, false)
|
||||
var checkUpdate by preference(Key.CHECK_UPDATES, true)
|
||||
var magiskHide by preference(Key.MAGISKHIDE, true)
|
||||
@JvmStatic
|
||||
var coreOnly by preference(Key.COREONLY, false)
|
||||
var showSystemApp by preference(Key.SHOW_SYSTEM_APP, false)
|
||||
|
||||
|
||||
@@ -24,8 +24,10 @@ import com.topjohnwu.magisk.utils.DynamicClassLoader
|
||||
import com.topjohnwu.magisk.utils.FileProvider
|
||||
import com.topjohnwu.magisk.utils.Utils
|
||||
import com.topjohnwu.magisk.utils.currentLocale
|
||||
import com.topjohnwu.superuser.ShellUtils
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
val packageName: String get() = get<Context>().packageName
|
||||
@@ -280,4 +282,33 @@ fun Context.unwrap(): Context {
|
||||
|
||||
fun Context.hasPermissions(vararg permissions: String) = permissions.all {
|
||||
ContextCompat.checkSelfPermission(this, it) == PERMISSION_GRANTED
|
||||
}
|
||||
}
|
||||
|
||||
private val securityLevelFormatter get() = SimpleDateFormat("yyyy-MM-dd", currentLocale)
|
||||
|
||||
/** Friendly reminder to seek newer roms or install oem updates. */
|
||||
val isDeviceSecure: Boolean
|
||||
get() {
|
||||
val latestPermittedTime = Calendar.getInstance().apply {
|
||||
time = securityLevelDate
|
||||
add(Calendar.MONTH, 2)
|
||||
}.time.time
|
||||
return now in 0..latestPermittedTime
|
||||
}
|
||||
val securityLevelDate get() = securityLevelFormatter.parseOrNull(securityLevel) ?: Date(0)
|
||||
val securityLevel
|
||||
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
Build.VERSION.SECURITY_PATCH
|
||||
} else {
|
||||
null
|
||||
} ?: "1970-01-01" //never
|
||||
|
||||
val isSAR
|
||||
get() = ShellUtils
|
||||
.fastCmd("grep_prop ro.build.system_root_image")
|
||||
.let { it.isNotEmpty() && it.toBoolean() }
|
||||
|
||||
val isAB
|
||||
get() = ShellUtils
|
||||
.fastCmd("grep_prop ro.build.ab_update")
|
||||
.let { it.isNotEmpty() && it.toBoolean() }
|
||||
@@ -3,9 +3,11 @@ package com.topjohnwu.magisk.extensions
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import androidx.core.net.toFile
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.zip.ZipEntry
|
||||
import java.util.zip.ZipInputStream
|
||||
@@ -100,4 +102,7 @@ fun Locale.toLangTag(): String {
|
||||
tag.append('-').append(variant)
|
||||
return tag.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun SimpleDateFormat.parseOrNull(date: String) =
|
||||
runCatching { parse(date) }.onFailure { Timber.e(it) }.getOrNull()
|
||||
@@ -11,4 +11,6 @@ fun reboot(reason: String = if (Info.recovery) "recovery" else "") {
|
||||
}
|
||||
|
||||
fun File.suOutputStream() = SuFileOutputStream(this)
|
||||
fun File.suInputStream() = SuFileInputStream(this)
|
||||
fun File.suInputStream() = SuFileInputStream(this)
|
||||
|
||||
val hasRoot get() = Shell.rootAccess()
|
||||
@@ -62,6 +62,7 @@ class HomeViewModel(
|
||||
|
||||
val stateMagiskExpanded = KObservableField(false)
|
||||
val stateManagerExpanded = KObservableField(false)
|
||||
val stateDeviceExpanded = KObservableField(false)
|
||||
|
||||
val stateHideManagerName = R.string.manager.res().let {
|
||||
if (!statePackageOriginal) {
|
||||
|
||||
Reference in New Issue
Block a user