11package li.songe.gkd.ui
22
3+ import androidx.activity.compose.LocalActivity
34import androidx.compose.foundation.background
45import androidx.compose.foundation.layout.Arrangement
56import androidx.compose.foundation.layout.Column
@@ -31,6 +32,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
3132import com.ramcosta.composedestinations.annotation.Destination
3233import com.ramcosta.composedestinations.annotation.RootGraph
3334import kotlinx.coroutines.Dispatchers
35+ import li.songe.gkd.MainActivity
3436import li.songe.gkd.permission.PermissionState
3537import li.songe.gkd.permission.appOpsRestrictStateList
3638import li.songe.gkd.ui.component.AuthButtonGroup
@@ -39,17 +41,22 @@ import li.songe.gkd.ui.component.ManualAuthDialog
3941import li.songe.gkd.ui.component.PerfIcon
4042import li.songe.gkd.ui.component.PerfIconButton
4143import li.songe.gkd.ui.component.PerfTopAppBar
44+ import li.songe.gkd.ui.component.updateDialogOptions
4245import li.songe.gkd.ui.share.LocalMainViewModel
4346import li.songe.gkd.ui.style.EmptyHeight
4447import li.songe.gkd.ui.style.ProfileTransitions
4548import li.songe.gkd.ui.style.itemHorizontalPadding
49+ import li.songe.gkd.util.getShareApkFile
4650import li.songe.gkd.util.launchAsFn
51+ import li.songe.gkd.util.launchTry
52+ import li.songe.gkd.util.saveFileToDownloads
4753import li.songe.gkd.util.toast
4854
4955@Destination<RootGraph >(style = ProfileTransitions ::class )
5056@Composable
5157fun AppOpsAllowPage () {
5258 val mainVm = LocalMainViewModel .current
59+ val context = LocalActivity .current as MainActivity
5360 val vm = viewModel<AppOpsAllowVm >()
5461 val scrollBehavior = TopAppBarDefaults .enterAlwaysScrollBehavior()
5562 val appOpsRestricted by mainVm.appOpsRestrictedFlow.collectAsState()
@@ -75,11 +82,12 @@ fun AppOpsAllowPage() {
7582 .fillMaxWidth(),
7683 ) {
7784 Text (
78- text = " 下列权限应默认授予,但可能因某些操作被限制 " ,
85+ text = " 下列权限应默认授予,但可能因某些操作如系统升级,备份迁移等被限制 " ,
7986 style = MaterialTheme .typography.bodyMedium,
8087 )
8188 Spacer (modifier = Modifier .height(24 .dp))
8289 Column (
90+ modifier = Modifier .padding(horizontal = 8 .dp),
8391 verticalArrangement = Arrangement .spacedBy(12 .dp),
8492 ) {
8593 appOpsRestrictStateList.forEach { RestrictItem (it) }
@@ -95,6 +103,19 @@ fun AppOpsAllowPage() {
95103 " 外部授权" to {
96104 vm.showCopyDlgFlow.value = true
97105 },
106+ " 卸载重装" to {
107+ mainVm.dialogFlow.updateDialogOptions(
108+ title = " 卸载重装" ,
109+ text = " 卸载后重新安装可让应用权限回归初始状态解除限制,先点击下方「导出应用」可将应用提前保存至下载,然后卸载应用,到文件管理中重新安装即可\n\n 注意:卸载会删除所有数据,请自行备份数据" ,
110+ dismissText = " 导出应用" ,
111+ dismissAction = {
112+ mainVm.viewModelScope.launchTry(Dispatchers .IO ) {
113+ context.saveFileToDownloads(getShareApkFile())
114+ }
115+ },
116+ confirmText = " 关闭" ,
117+ )
118+ }
98119 )
99120 )
100121 }
0 commit comments