diff options
author | 2025-03-19 14:04:37 -0700 | |
---|---|---|
committer | 2025-03-19 14:04:37 -0700 | |
commit | 1378bb8df731e8be31bb2372741b4ab1ccacddef (patch) | |
tree | 30416a33503dc3414ae95e1292f0182476fbb709 /PermissionController | |
parent | b672edd94077c67168f52e9604818f257b1c3299 (diff) |
Wear: Hide health group if not requesting system permissions.
This fixes a corner case where if a Wear app is only requesting non-system health permissions, the chip should not be shown. As a consequence this would hide apps only requesting something invalid on Wear like READ_STEPS. This would also hide apps only requesting READ_HEALTH_DATA_IN_BACKGROUND.
Bug: 401089783
Test: Local test with app only requesting non-system permissions. See that the chip is hidden.
Flag: android.permission.flags.replace_body_sensor_permission_enabled
Change-Id: Id2533e06ee9e6df30c5bf2bbdeba04e427810027
Relnote: Fix health chip shown corner case on Wear.
Diffstat (limited to 'PermissionController')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index 327142896..93e5abc70 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -1109,10 +1109,23 @@ public final class Utils { return false; } - // Always show Fitness&Wellness chip on Wear. + // Only show Fitness&Wellness chip on Wear if the app is requesting system permissions. if (Flags.replaceBodySensorPermissionEnabled() - && pm.hasSystemFeature(PackageManager.FEATURE_WATCH)) { - return true; + && pm.hasSystemFeature(PackageManager.FEATURE_WATCH)) { + Set<String> requestedPermissions = new HashSet<>(packageInfo.getRequestedPermissions()); + for (PermissionInfo permission : permissions) { + if (!requestedPermissions.contains(permission.name)) { + continue; + } + String appOpStr = AppOpsManager.permissionToOp(permission.name); + if (appOpStr != null + && !appOpStr.equals(AppOpsManager.OPSTR_READ_WRITE_HEALTH_DATA)) { + // Found system health permission. Show the chip. + return true; + } + } + // No valid system permissions are requested. + return false; } // Check in permission is already granted as we should not hide it in the UX at that point. |