summaryrefslogtreecommitdiff
path: root/PermissionController
diff options
context:
space:
mode:
author Justin Lannin <jlannin@google.com> 2025-03-19 14:04:37 -0700
committer Justin Lannin <jlannin@google.com> 2025-03-19 14:04:37 -0700
commit1378bb8df731e8be31bb2372741b4ab1ccacddef (patch)
tree30416a33503dc3414ae95e1292f0182476fbb709 /PermissionController
parentb672edd94077c67168f52e9604818f257b1c3299 (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.java19
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.