feat: detect user restrictions set by other admins (#242)

This commit is contained in:
BinTianqi
2026-02-12 13:55:07 +08:00
parent ac2a90dbca
commit 64191761b7
2 changed files with 7 additions and 10 deletions

View File

@@ -121,9 +121,6 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.addJsonObject
import kotlinx.serialization.json.buildJsonArray
import kotlinx.serialization.json.put
import java.net.InetAddress import java.net.InetAddress
import java.security.MessageDigest import java.security.MessageDigest
import java.security.cert.CertificateException import java.security.cert.CertificateException
@@ -1336,9 +1333,8 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
Privilege.updateStatus() Privilege.updateStatus()
} }
val userRestrictions = MutableStateFlow(emptyMap<String, Boolean>()) val userRestrictions = MutableStateFlow(emptyMap<String, Boolean>())
@RequiresApi(24)
fun getUserRestrictions() { fun getUserRestrictions() {
val bundle = DPM.getUserRestrictions(DAR) val bundle = UM.userRestrictions
userRestrictions.value = bundle.keySet().associateWith { bundle.getBoolean(it) } userRestrictions.value = bundle.keySet().associateWith { bundle.getBoolean(it) }
} }
fun setUserRestriction(name: String, state: Boolean): Boolean { fun setUserRestriction(name: String, state: Boolean): Boolean {
@@ -1349,6 +1345,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
DPM.clearUserRestriction(DAR, name) DPM.clearUserRestriction(DAR, name)
} }
userRestrictions.update { it.plus(name to state) } userRestrictions.update { it.plus(name to state) }
getUserRestrictions()
ShortcutUtils.updateUserRestrictionShortcut(application, name, !state, true) ShortcutUtils.updateUserRestrictionShortcut(application, name, !state, true)
true true
} catch (_: SecurityException) { } catch (_: SecurityException) {

View File

@@ -1,9 +1,9 @@
[versions] [versions]
agp = "8.13.2" agp = "8.13.2"
kotlin = "2.3.0" kotlin = "2.3.10"
navigation-compose = "2.9.6" navigation-compose = "2.9.7"
composeBom = "2025.12.01" composeBom = "2026.02.00"
accompanist-drawablepainter = "0.37.3" accompanist-drawablepainter = "0.37.3"
accompanist-permissions = "0.37.3" accompanist-permissions = "0.37.3"
shizuku = "13.1.5" shizuku = "13.1.5"
@@ -13,7 +13,7 @@ dhizuku-server = "0.0.10"
hiddenApiBypass = "6.1" hiddenApiBypass = "6.1"
libsu = "6.0.0" libsu = "6.0.0"
reoderable = "3.0.0" reoderable = "3.0.0"
serialization = "1.9.0" serialization = "1.10.0"
[libraries] [libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
@@ -42,4 +42,4 @@ serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version = "2.3.0" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version = "2.3.10" }