Skip to content

Commit 7a9bef7

Browse files
committed
fix: sh file
1 parent 3cef1be commit 7a9bef7

File tree

3 files changed

+35
-22
lines changed

3 files changed

+35
-22
lines changed

app/src/main/kotlin/li/songe/gkd/service/ExposeService.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class ExposeService : Service() {
3131
LogUtils.d("ExposeService::handleIntent", expose, data)
3232
when (expose) {
3333
0 -> SnapshotExt.captureSnapshot()
34+
1 -> toast("执行成功")
35+
3436
else -> {
3537
toast("未知调用: expose=$expose data=$data")
3638
}
@@ -52,13 +54,14 @@ class ExposeService : Service() {
5254
}
5355

5456
private const val template = $$"""set -euo pipefail
57+
echo '> start expose.sh'
5558
p=''
56-
if [ -n "$1" ]; then
59+
if [ -n "${1:-}" ]; then
5760
p+=" --ei expose $1"
5861
fi
59-
if [ -n "$2" ]; then
62+
if [ -n "${2:-}" ]; then
6063
p+=" --es data $2"
6164
fi
6265
am start-foreground-service -n {service} $p
63-
echo 'Execution Successful'
66+
echo '> expose.sh end'
6467
"""

app/src/main/kotlin/li/songe/gkd/ui/AppOpsAllowVm.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import kotlinx.coroutines.launch
1010
import li.songe.gkd.permission.foregroundServiceSpecialUseState
1111

1212
class AppOpsAllowVm : ViewModel() {
13+
val showCopyDlgFlow = MutableStateFlow(false)
14+
1315
init {
1416
viewModelScope.launch(Dispatchers.IO) {
1517
while (isActive) {
@@ -18,5 +20,4 @@ class AppOpsAllowVm : ViewModel() {
1820
}
1921
}
2022
}
21-
val showCopyDlgFlow = MutableStateFlow(false)
2223
}

app/src/main/kotlin/li/songe/gkd/ui/AuthA11yPage.kt

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import androidx.compose.material3.TopAppBarDefaults
2525
import androidx.compose.runtime.Composable
2626
import androidx.compose.runtime.collectAsState
2727
import androidx.compose.runtime.getValue
28+
import androidx.compose.runtime.remember
2829
import androidx.compose.ui.Modifier
2930
import androidx.compose.ui.draw.clip
3031
import androidx.compose.ui.input.nestedscroll.nestedScroll
@@ -57,7 +58,7 @@ import li.songe.gkd.ui.style.itemHorizontalPadding
5758
import li.songe.gkd.ui.style.surfaceCardColors
5859
import li.songe.gkd.util.AndroidTarget
5960
import li.songe.gkd.util.ShortUrlSet
60-
import li.songe.gkd.util.launchAsFn
61+
import li.songe.gkd.util.launchTry
6162
import li.songe.gkd.util.openA11ySettings
6263
import li.songe.gkd.util.shFolder
6364
import li.songe.gkd.util.throttle
@@ -235,7 +236,7 @@ fun AuthA11yPage() {
235236
text = "若能正常开关无障碍请忽略此项",
236237
style = MaterialTheme.typography.bodySmall,
237238
)
238-
A11yAuthButtonGroup()
239+
A11yAuthButtonGroup(showFix = true)
239240
Spacer(modifier = Modifier.height(12.dp))
240241
}
241242
}
@@ -258,37 +259,45 @@ private val String.pmGrant get() = "pm grant ${META.appId} $this"
258259
val gkdStartCommandText by lazy {
259260
val commandText = listOfNotNull(
260261
"set -euo pipefail",
262+
"echo '> start start.sh'",
261263
Manifest.permission.WRITE_SECURE_SETTINGS.pmGrant,
262264
if (AndroidTarget.TIRAMISU) "ACCESS_RESTRICTED_SETTINGS".appopsAllow else null,
263265
if (AndroidTarget.UPSIDE_DOWN_CAKE) "FOREGROUND_SERVICE_SPECIAL_USE".appopsAllow else null,
264-
"echo 'Execution Successful'",
266+
"sh ${shFolder.absolutePath}/expose.sh 1",
267+
"echo '> start.sh end'",
265268
).joinToString("\n")
266269
val file = shFolder.resolve("start.sh")
267270
file.writeText(commandText)
268271
"adb shell sh ${file.absolutePath}"
269272
}
270273

271274
@Composable
272-
private fun A11yAuthButtonGroup() {
275+
private fun A11yAuthButtonGroup(showFix: Boolean = false) {
273276
val mainVm = LocalMainViewModel.current
274277
val vm = viewModel<AuthA11yVm>()
275278
AuthButtonGroup(
276-
buttons = listOf(
277-
"手动解除" to {
278-
mainVm.navigateWebPage(ShortUrlSet.URL2)
279-
},
280-
"Shizuku 授权" to vm.viewModelScope.launchAsFn(Dispatchers.IO) {
281-
mainVm.guardShizukuContext()
282-
if (writeSecureSettingsState.value) {
283-
toast("授权成功")
284-
storeFlow.update { it.copy(enableService = true) }
285-
fixRestartService()
279+
buttons = remember(showFix) {
280+
val list = mutableListOf<Pair<String, () -> Unit>>()
281+
if (showFix) {
282+
list.add("手动解除" to {
283+
mainVm.navigateWebPage(ShortUrlSet.URL2)
284+
})
285+
}
286+
list.add("Shizuku 授权" to {
287+
vm.viewModelScope.launchTry(Dispatchers.IO) {
288+
mainVm.guardShizukuContext()
289+
if (writeSecureSettingsState.value) {
290+
toast("授权成功")
291+
storeFlow.update { it.copy(enableService = true) }
292+
fixRestartService()
293+
}
286294
}
287-
},
288-
"外部授权" to {
295+
})
296+
list.add("外部授权" to {
289297
vm.showCopyDlgFlow.value = true
290-
},
291-
)
298+
})
299+
list
300+
}
292301
)
293302
}
294303

0 commit comments

Comments
 (0)