diff --git a/core/api/current.txt b/core/api/current.txt index 5656c31c330af..e916bde7d47a3 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -61,6 +61,7 @@ package android { field public static final String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED"; field public static final String BLUETOOTH_SCAN = "android.permission.BLUETOOTH_SCAN"; field public static final String BODY_SENSORS = "android.permission.BODY_SENSORS"; + field public static final String BODY_SENSORS_BACKGROUND = "android.permission.BODY_SENSORS_BACKGROUND"; field public static final String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED"; field public static final String BROADCAST_SMS = "android.permission.BROADCAST_SMS"; field public static final String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY"; diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 5781b1edd2427..075329b0e5f45 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1481,8 +1481,26 @@ android:permissionGroup="android.permission-group.UNDEFINED" android:label="@string/permlab_bodySensors" android:description="@string/permdesc_bodySensors" + android:backgroundPermission="android.permission.BODY_SENSORS_BACKGROUND" android:protectionLevel="dangerous" /> + + + - Allows the app to access data from sensors - that monitor your physical condition, such as your heart rate. + Access to data from body sensors such as heart rate, temperature, blood oxygen percentage, etc. + + access body sensors (like heart rate monitors) while in the background + + Access to data from body sensors such as heart rate, temperature, blood oxygen percentage, etc. while in the background. Read calendar events and details diff --git a/data/etc/platform.xml b/data/etc/platform.xml index 756425eedabba..9f4e1955cafde 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -222,6 +222,10 @@ targetSdk="29"> + + + diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index ece0a62b78774..297ea75152c85 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -198,6 +198,7 @@ final class DefaultPermissionGrantPolicy { private static final Set SENSORS_PERMISSIONS = new ArraySet<>(); static { SENSORS_PERMISSIONS.add(Manifest.permission.BODY_SENSORS); + SENSORS_PERMISSIONS.add(Manifest.permission.BODY_SENSORS_BACKGROUND); } private static final Set STORAGE_PERMISSIONS = new ArraySet<>(); diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 3855e655fb278..8e7622d910698 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -5914,7 +5914,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (op < 0) { // Bg location is one-off runtime modifier permission and has no app op if (sPlatformPermissions.contains(permission) - && !Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(permission)) { + && !Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(permission) + && !Manifest.permission.BODY_SENSORS_BACKGROUND.equals(permission)) { Slog.wtf(LOG_TAG, "Platform runtime permission " + permission + " with no app op defined!"); }