From 0437ff11fab3b27b8a9afc927862a77214d2b902 Mon Sep 17 00:00:00 2001 From: BinTianqi <1220958406@qq.com> Date: Thu, 8 Feb 2024 21:24:16 +0800 Subject: [PATCH] fix AppManage problems --- .../binbin/androidowner/ApplicationManage.kt | 88 +++++++------------ app/src/main/res/values/strings.xml | 2 +- 2 files changed, 33 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt b/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt index b1610e2..874920f 100644 --- a/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt +++ b/app/src/main/java/com/binbin/androidowner/ApplicationManage.kt @@ -34,7 +34,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp @@ -77,22 +76,27 @@ fun ApplicationManage(){ ) } if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))){ - val isSuspended: Boolean = try{ myDpm.isPackageSuspended(myComponent,pkgName) } - catch(e:NameNotFoundException){ false } - catch(w:NameNotFoundException){ false } - catch(e:IllegalArgumentException){ false } - AppManageItem(R.string.suspend,R.string.place_holder, {isSuspended}) { b -> myDpm.setPackagesSuspended(myComponent, arrayOf(pkgName), b) } - } - AppManageItem(R.string.hide,R.string.isapphidden_desc, {myDpm.isApplicationHidden(myComponent,pkgName)}, {b -> myDpm.setApplicationHidden(myComponent,pkgName,b)}) - if(VERSION.SDK_INT>=24){ AppManageItem( - R.string.always_on_vpn,R.string.experimental_feature,{pkgName == myDpm.getAlwaysOnVpnPackage(myComponent)}, - {b -> - try{ myDpm.setAlwaysOnVpnPackage(myComponent,pkgName,b) } - catch(e:java.lang.UnsupportedOperationException){ Toast.makeText(myContext, "不支持", Toast.LENGTH_SHORT).show() } - catch(e:NameNotFoundException){ Toast.makeText(myContext, "未安装", Toast.LENGTH_SHORT).show() } + R.string.suspend,R.string.place_holder, + {try{ myDpm.isPackageSuspended(myComponent,pkgName) } + catch(e:NameNotFoundException){ false } + catch(e:IllegalArgumentException){ false }} + ) { b -> myDpm.setPackagesSuspended(myComponent, arrayOf(pkgName), b) } + } + if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ + AppManageItem(R.string.hide,R.string.isapphidden_desc, {myDpm.isApplicationHidden(myComponent,pkgName)}) {b-> myDpm.setApplicationHidden(myComponent, pkgName, b)} + } + if(VERSION.SDK_INT>=24&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm))){ + AppManageItem( + R.string.always_on_vpn,R.string.experimental_feature,{pkgName == myDpm.getAlwaysOnVpnPackage(myComponent)}) {b-> + try { + myDpm.setAlwaysOnVpnPackage(myComponent, pkgName, b) + } catch(e: java.lang.UnsupportedOperationException) { + Toast.makeText(myContext, "不支持", Toast.LENGTH_SHORT).show() + } catch(e: NameNotFoundException) { + Toast.makeText(myContext, "未安装", Toast.LENGTH_SHORT).show() } - ) + } } if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ @@ -100,15 +104,16 @@ fun ApplicationManage(){ var state by remember{mutableStateOf(myDpm.isUninstallBlocked(myComponent,pkgName))} Text(text = "防卸载", style = typography.titleLarge) Text("当前状态:${if(state){"打开"}else{"关闭"}}") - Text("有时候无法正确获取防卸载状态") + Text(text = "有时候无法正确获取防卸载状态", style = bodyTextStyle) Row(horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()) { Button( onClick = { focusMgr.clearFocus() myDpm.setUninstallBlocked(myComponent,pkgName,true) + Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show() state = myDpm.isUninstallBlocked(myComponent,pkgName) }, - modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.49F)} + modifier = Modifier.fillMaxWidth(0.49F) ) { Text("打开") } @@ -116,9 +121,11 @@ fun ApplicationManage(){ onClick = { focusMgr.clearFocus() myDpm.setUninstallBlocked(myComponent,pkgName,false) + Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show() state = myDpm.isUninstallBlocked(myComponent,pkgName) }, - modifier = if(isWear){Modifier}else{Modifier.fillMaxWidth(0.96F)}){ + modifier = Modifier.fillMaxWidth(0.96F) + ){ Text("关闭") } } @@ -133,11 +140,7 @@ fun ApplicationManage(){ pkgList = myDpm.getUserControlDisabledPackages(myComponent) listText = "" var count = pkgList.size - for(pkg in pkgList){ - count-=1 - listText+=pkg - if(count>0){listText+="\n"} - } + for(pkg in pkgList){ count-=1; listText+=pkg; if(count>0){listText+="\n"} } } var inited by remember{mutableStateOf(false)} if(!inited){refresh();inited=true} @@ -178,10 +181,7 @@ fun ApplicationManage(){ } } Button( - onClick = { - myDpm.setUserControlDisabledPackages(myComponent, listOf()) - refresh() - }, + onClick = { myDpm.setUserControlDisabledPackages(myComponent, listOf()); refresh() }, modifier = Modifier.fillMaxWidth() ){ Text("清空列表") @@ -469,45 +469,21 @@ private fun AppManageItem( getMethod:()->Boolean, setMethod:(b:Boolean)->Unit ){ - val myDpm = LocalContext.current.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager - val focusMgr = LocalFocusManager.current - var isEnabled by remember{ mutableStateOf(false) } val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) - if(!sharedPref.getBoolean("isWear",false)){ Row( modifier = sections(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - Column { + var enabled by remember{mutableStateOf(getMethod())} + enabled = getMethod() + Column(modifier = if(sharedPref.getBoolean("isWear",false)){Modifier.fillMaxWidth(0.65F)}else{Modifier}){ Text(text = stringResource(itemName), style = typography.titleLarge, color = colorScheme.onPrimaryContainer) if(itemDesc!=R.string.place_holder){ Text(stringResource(itemDesc)) } } Switch( - checked = isEnabled, - onCheckedChange = { - setMethod(!isEnabled) - isEnabled = getMethod() - }, - enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm) + checked = enabled, + onCheckedChange = { setMethod(!enabled); enabled=getMethod() } ) - }}else{ - Column( - modifier = sections() - ) { - Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) { - Text(text = stringResource(itemName), fontWeight = FontWeight.SemiBold, style = typography.titleMedium) - Switch( - checked = isEnabled, - onCheckedChange = { - setMethod(!isEnabled) - isEnabled = getMethod() - focusMgr.clearFocus() - }, - enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm) - ) - } - if(itemDesc!=R.string.place_holder){ Text(text = stringResource(itemDesc), style = typography.bodyMedium) } - } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4c1e85e..c1aa331 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,7 +13,7 @@ 备份服务 应用管理 - 停用 + 挂起 隐藏 如果隐藏,有可能是没安装 禁止用户控制