From 20e5b2f617a9755102335d9f4eb29c7cebfba6ae Mon Sep 17 00:00:00 2001 From: QIU Date: Fri, 14 Aug 2026 09:27:00 +0000 Subject: [PATCH] =?UTF-8?q?fix(roaming):=20=E6=9D=83=E9=99=90=E6=8E=88?= =?UTF-8?q?=E4=BA=88=E5=90=8E=E9=A1=B5=E9=9D=A2=E5=86=85=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:用户在页面内跳系统设置授予定位权限再回来,GPS 监听不启动(必须退出重进页面)。 根因:permissionLauncher 回调是空的 { },不更新 hasPermission 状态。 修复:回调里检查 FINE/COARSE 权限并更新 hasPermission,触发 DisposableEffect 启动 GPS 监听。 影响:用户授权后立即生效,无需退出重进。 --- .../com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt b/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt index 3bdd83f2..b3afbb2b 100644 --- a/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt +++ b/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt @@ -89,7 +89,11 @@ fun RoamingScreen() { var hasPermission by remember { mutableStateOf(false) } val permissionLauncher = rememberLauncherForActivityResult( ActivityResultContracts.RequestMultiplePermissions() - ) { } + ) { results -> + val fine = results[Manifest.permission.ACCESS_FINE_LOCATION] == true + val coarse = results[Manifest.permission.ACCESS_COARSE_LOCATION] == true + hasPermission = fine || coarse + } LaunchedEffect(Unit) { hourPrefix = SimpleDateFormat("HH:mm", Locale.getDefault()).format(Date()).substring(0, 3) val fine = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) ==