Fix lose enable perAppProxy status with shizuku
This commit is contained in:
committed by
GitHub
parent
02f9ec4d97
commit
bfd6d480c4
@@ -113,14 +113,19 @@ fun ProfileOverrideScreen(navController: NavController) {
|
|||||||
val isShizukuBinderReady by PackageQueryManager.shizukuBinderReady.collectAsState()
|
val isShizukuBinderReady by PackageQueryManager.shizukuBinderReady.collectAsState()
|
||||||
val isShizukuPermissionGranted by PackageQueryManager.shizukuPermissionGranted.collectAsState()
|
val isShizukuPermissionGranted by PackageQueryManager.shizukuPermissionGranted.collectAsState()
|
||||||
val isShizukuAvailable = isShizukuBinderReady && isShizukuPermissionGranted
|
val isShizukuAvailable = isShizukuBinderReady && isShizukuPermissionGranted
|
||||||
|
var isShizukuStateInitialized by remember(showModeSelector) { mutableStateOf(!showModeSelector) }
|
||||||
|
|
||||||
DisposableEffect(showModeSelector) {
|
DisposableEffect(showModeSelector) {
|
||||||
if (showModeSelector) {
|
if (showModeSelector) {
|
||||||
|
isShizukuStateInitialized = false
|
||||||
PackageQueryManager.registerListeners()
|
PackageQueryManager.registerListeners()
|
||||||
|
PackageQueryManager.refreshShizukuState()
|
||||||
|
isShizukuStateInitialized = true
|
||||||
}
|
}
|
||||||
onDispose {
|
onDispose {
|
||||||
if (showModeSelector) {
|
if (showModeSelector) {
|
||||||
PackageQueryManager.unregisterListeners()
|
PackageQueryManager.unregisterListeners()
|
||||||
|
isShizukuStateInitialized = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,8 +145,14 @@ fun ProfileOverrideScreen(navController: NavController) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Auto-disable per-app proxy if Shizuku authorization is revoked (only when using Shizuku mode)
|
// Auto-disable per-app proxy if Shizuku authorization is revoked (only when using Shizuku mode)
|
||||||
LaunchedEffect(isShizukuAvailable, useRootMode) {
|
LaunchedEffect(isShizukuAvailable, useRootMode, isShizukuStateInitialized, perAppProxyEnabled, showModeSelector) {
|
||||||
if (showModeSelector && !useRootMode && !isShizukuAvailable && perAppProxyEnabled) {
|
if (
|
||||||
|
showModeSelector &&
|
||||||
|
!useRootMode &&
|
||||||
|
isShizukuStateInitialized &&
|
||||||
|
perAppProxyEnabled &&
|
||||||
|
!PackageQueryManager.isShizukuAvailable()
|
||||||
|
) {
|
||||||
perAppProxyEnabled = false
|
perAppProxyEnabled = false
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
Settings.perAppProxyEnabled = false
|
Settings.perAppProxyEnabled = false
|
||||||
|
|||||||
Reference in New Issue
Block a user