From 6528c0e84b59fc903bec19c7c6261768e2d47ea0 Mon Sep 17 00:00:00 2001 From: Scarlett Song Date: Tue, 29 Oct 2024 18:14:38 +0000 Subject: Health: Enabled HealthConnect PrivacyDashboard on Wear Bug: 364643016 Bug: 364638912 Relnote: Granular health permission phase 1 Flag: android.permission.flags.replace_body_sensor_permission_enabled LOW_COVERAGE_REASON=OTHER_FORM_FACTOR Change-Id: I999878d025f721d7ca992b57b84cef9d223b79d5 --- .../permission/ui/ManagePermissionsActivity.java | 11 ++++++++++- .../permission/ui/wear/WearPermissionUsageScreen.kt | 9 ++++++++- .../permissioncontroller/permission/utils/Utils.java | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) (limited to 'PermissionController/src') diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java index 36917fbf1..0af7cf2ec 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java @@ -42,6 +42,7 @@ import android.os.Bundle; import android.os.Process; import android.os.UserHandle; import android.permission.PermissionManager; +import android.permission.flags.Flags; import android.provider.Settings; import android.safetycenter.SafetyCenterManager; import android.safetycenter.SafetyEvent; @@ -450,7 +451,15 @@ public final class ManagePermissionsActivity extends SettingsActivity { if (Utils.isHealthPermissionUiEnabled() && permissionGroupName .equals(HEALTH_PERMISSION_GROUP)) { - Utils.navigateToHealthConnectSettings(this); + // On Handheld, PrivacyDashboard and PermissionManager have the same UI. + // On Wear, PrivacyDashboard and PermissionManager have different UI, + // PermissionController needs to add an extra in the intent to instruct + // HealthConnect how to differentiate. + if (DeviceUtils.isWear(this) && Flags.replaceBodySensorPermissionEnabled()) { + Utils.navigateToWearHealthConnectSettingsPrivacyDashboard(this); + } else { + Utils.navigateToHealthConnectSettings(this); + } finishAfterTransition(); return; } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionUsageScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionUsageScreen.kt index 889caba3b..f8af241d7 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionUsageScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionUsageScreen.kt @@ -17,6 +17,7 @@ package com.android.permissioncontroller.permission.ui.wear import android.os.Build +import android.permission.flags.Flags import androidx.annotation.RequiresApi import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable @@ -70,7 +71,13 @@ fun WearPermissionUsageScreen(sessionId: Long, viewModel: PermissionUsageViewMod val permissionGroupPreferences = permissionGroupWithUsageCountsEntries // Removing Health Connect from the list of permissions to fix b/331260850 - .filterNot { Utils.isHealthPermissionGroup(it.key) } + .let { + if (Flags.replaceBodySensorPermissionEnabled()) { + it + } else { + it.filterNot { Utils.isHealthPermissionGroup(it.key) } + } + } .map { PermissionUsageControlPreference( context, diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java index aae5cb82c..38495f3b3 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java @@ -35,6 +35,7 @@ import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.OPSTR_LEGACY_STORAGE; import static android.content.Context.MODE_PRIVATE; import static android.content.Intent.EXTRA_PACKAGE_NAME; +import static android.content.Intent.EXTRA_REASON; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT; import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT; @@ -1502,6 +1503,19 @@ public final class Utils { context.startActivity(healthConnectIntent); } + + /** + * Navigate to health connect settings Wear privacy dashboard. + * + * @param context The current Context + */ + public static void navigateToWearHealthConnectSettingsPrivacyDashboard( + @NonNull Context context) { + Intent privacyDashboardHealthConnectIntent = new Intent(ACTION_MANAGE_HEALTH_PERMISSIONS); + privacyDashboardHealthConnectIntent.putExtra(EXTRA_REASON, "privacy_dashboard"); + context.startActivity(privacyDashboardHealthConnectIntent); + } + /** * Navigate to health connect settings for an app * @param context The current Context -- cgit v1.2.3-59-g8ed1b