WearOS应用卸载重装后未请求权限且授权仍报错问题咨询
三星Watch6(WearOS)权限问题排查与解决
1. 检查权限声明与配置
确保AndroidManifest.xml里正确声明所有必要的危险权限及硬件特性,以运动类应用为例:
<!-- 权限声明 --> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <uses-permission android:name="android.permission.BODY_SENSORS" /> <!-- 硬件特性声明(按需添加) --> <uses-feature android:name="android.hardware.activity_recognition" android:required="true" /> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
同时确认REQUIRED_PERMISSIONS数组包含所有需要申请的权限:
private val REQUIRED_PERMISSIONS = arrayOf( Manifest.permission.ACTIVITY_RECOGNITION, Manifest.permission.BODY_SENSORS // 补充其他必要权限 )
2. 修正PermissionLauncher的初始化与回调
你的代码仅调用了permissionLauncher.launch(),但需确保启动器初始化正确且处理权限结果:
private val permissionLauncher = registerForActivityResult( RequestMultiplePermissions() ) { permissions -> val allGranted = permissions.all { it.value } if (allGranted) { Log.d(TAG, "所有权限已授予") } else { // 处理权限拒绝,可引导用户前往设置页授权 Log.d(TAG, "部分权限被拒绝") } }
3. 关键操作前补充权限检查
仅在onViewCreated请求权限不够,启动运动服务前需再次验证权限状态,避免因权限状态未同步导致报错:
binding.startButton.setOnClickListener { val allPermissionsGranted = REQUIRED_PERMISSIONS.all { ContextCompat.checkSelfPermission(requireContext(), it) == PackageManager.PERMISSION_GRANTED } if (!allPermissionsGranted) { Log.d(TAG, "权限缺失,重新请求") permissionLauncher.launch(REQUIRED_PERMISSIONS) return@setOnClickListener } checkNotNull(serviceConnection.exerciseService) { "Failed to achieve ExerciseService instance" }.startExercise() findNavController().navigate(R.id.exerciseFragment) }
同时建议在ExerciseService的startExercise()方法内部也添加权限校验,确保服务运行时权限有效。
4. 解决系统权限缓存问题
卸载重装后权限不弹出,可能是三星Watch6的WearOS存在权限状态缓存,可按以下步骤操作:
- 卸载应用后,进入设置>应用>查看所有应用,确认无残留应用数据,如有则清除
- 重启手表后再重新安装应用
5. 同步权限状态监听
手动授权后应用可能未及时感知权限变化,可在onResume中重新检查权限状态:
override fun onResume() { super.onResume() val allPermissionsGranted = REQUIRED_PERMISSIONS.all { ContextCompat.checkSelfPermission(requireContext(), it) == PackageManager.PERMISSION_GRANTED } Log.d(TAG, "Resume时权限状态:$allPermissionsGranted") }
内容的提问来源于stack exchange,提问作者M. Usman Khan
相关产品推荐
相关产品推荐

