From a7533278168f1c4c4571a0911721c0750ec1e041 Mon Sep 17 00:00:00 2001 From: Jing Ji Date: Tue, 6 Dec 2022 15:33:40 -0800 Subject: [PATCH] Remove the health connect related permissions from the FGS type "health" As they're not supposed to be used by a FGS. Bug: 254662522 Bug: 246792057 Test: atest CtsAppFgsTestCases Change-Id: I000c489efed1ad038573e9c3a8faa8d8ba24fd9a --- core/api/current.txt | 2 +- .../app/ForegroundServiceTypePolicy.java | 41 ---------- core/java/android/content/pm/ServiceInfo.java | 7 +- packages/Shell/AndroidManifest.xml | 74 ------------------- 4 files changed, 3 insertions(+), 121 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 52be025434c98..e3b8728b6d273 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -12493,7 +12493,7 @@ package android.content.pm { field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}, anyOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.CHANGE_NETWORK_STATE, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, android.Manifest.permission.NFC, android.Manifest.permission.TRANSMIT_IR}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10 field @Deprecated @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1 field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT) public static final int FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT = 4096; // 0x1000 - field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100 + field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100 field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_LOCATION}, anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8 field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 2; // 0x2 diff --git a/core/java/android/app/ForegroundServiceTypePolicy.java b/core/java/android/app/ForegroundServiceTypePolicy.java index e99e360a45839..877177cc8861f 100644 --- a/core/java/android/app/ForegroundServiceTypePolicy.java +++ b/core/java/android/app/ForegroundServiceTypePolicy.java @@ -56,7 +56,6 @@ import android.content.pm.ServiceInfo.ForegroundServiceType; import android.hardware.usb.UsbAccessory; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; -import android.healthconnect.HealthConnectManager; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.PermissionCheckerManager; @@ -73,7 +72,6 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; import java.util.Optional; -import java.util.Set; /** * This class enforces the policies around the foreground service types. @@ -994,45 +992,6 @@ public abstract class ForegroundServiceTypePolicy { } } - static class HealthConnectPermission extends RegularPermission { - private @Nullable String[] mPermissionNames; - - HealthConnectPermission() { - super("Health Connect"); - } - - @Override - @SuppressLint("AndroidFrameworkRequiresPermission") - @PackageManager.PermissionResult - public int checkPermission(@NonNull Context context, int callerUid, int callerPid, - String packageName, boolean allowWhileInUse) { - final String[] perms = getPermissions(context); - for (String perm : perms) { - if (checkPermission(context, perm, callerUid, callerPid, - packageName, allowWhileInUse) == PERMISSION_GRANTED) { - return PERMISSION_GRANTED; - } - } - return PERMISSION_DENIED; - } - - @Override - void addToList(@NonNull Context context, @NonNull ArrayList list) { - final String[] perms = getPermissions(context); - for (String perm : perms) { - list.add(perm); - } - } - - private @NonNull String[] getPermissions(@NonNull Context context) { - if (mPermissionNames != null) { - return mPermissionNames; - } - final Set healthPerms = HealthConnectManager.getHealthPermissions(context); - return mPermissionNames = healthPerms.toArray(new String[healthPerms.size()]); - } - } - /** * The default policy for the foreground service types. * diff --git a/core/java/android/content/pm/ServiceInfo.java b/core/java/android/content/pm/ServiceInfo.java index fc2c532ee756f..6453ab0b89649 100644 --- a/core/java/android/content/pm/ServiceInfo.java +++ b/core/java/android/content/pm/ServiceInfo.java @@ -308,9 +308,7 @@ public class ServiceInfo extends ComponentInfo * permissions: * {@link android.Manifest.permission#ACTIVITY_RECOGNITION}, * {@link android.Manifest.permission#BODY_SENSORS}, - * {@link android.Manifest.permission#HIGH_SAMPLING_RATE_SENSORS}, - * or one of the {@code "android.permission.health.*"} permissions defined in the - * {@link android.healthconnect.HealthPermissions}. + * {@link android.Manifest.permission#HIGH_SAMPLING_RATE_SENSORS}. */ @RequiresPermission( allOf = { @@ -320,8 +318,7 @@ public class ServiceInfo extends ComponentInfo Manifest.permission.ACTIVITY_RECOGNITION, Manifest.permission.BODY_SENSORS, Manifest.permission.HIGH_SAMPLING_RATE_SENSORS, - }, - conditional = true + } ) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 1 << 8; diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 973d0de7e23b0..84659d704627b 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -777,80 +777,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -