Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2aebeda4 authored by Nagesh Pachorkar's avatar Nagesh Pachorkar Committed by Android (Google) Code Review
Browse files

Merge "Introduced granular skin temperature permissions"

parents aece4261 2f6ff566
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -64,6 +64,8 @@ package android {
    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 BODY_SENSORS_WRIST_TEMPERATURE = "android.permission.BODY_SENSORS_WRIST_TEMPERATURE";
    field public static final String BODY_SENSORS_WRIST_TEMPERATURE_BACKGROUND = "android.permission.BODY_SENSORS_WRIST_TEMPERATURE_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";
@@ -4845,6 +4847,7 @@ package android.app {
    field public static final String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
    field public static final String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
    field public static final String OPSTR_BODY_SENSORS = "android:body_sensors";
    field public static final String OPSTR_BODY_SENSORS_WRIST_TEMPERATURE = "android:body_sensors_wrist_temperature";
    field public static final String OPSTR_CALL_PHONE = "android:call_phone";
    field public static final String OPSTR_CAMERA = "android:camera";
    field public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
@@ -12739,7 +12742,7 @@ package android.content.pm {
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CAMERA}, anyOf={android.Manifest.permission.CAMERA}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
    field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}, anyOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_SCAN, 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, android.Manifest.permission.UWB_RANGING}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
    field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
    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_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.BODY_SENSORS_WRIST_TEMPERATURE, 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
+16 −2
Original line number Diff line number Diff line
@@ -1448,9 +1448,13 @@ public class AppOpsManager {
    public static final int OP_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD =
            AppProtoEnums.APP_OP_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD;

    /** @hide Access to wrist temperature sensors. */
    public static final int OP_BODY_SENSORS_WRIST_TEMPERATURE =
            AppProtoEnums.APP_OP_BODY_SENSORS_WRIST_TEMPERATURE;

    /** @hide */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public static final int _NUM_OP = 132;
    public static final int _NUM_OP = 133;

    /** Access to coarse location information. */
    public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
@@ -2030,6 +2034,10 @@ public class AppOpsManager {
    public static final String OPSTR_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD =
            "android:capture_consentless_bugreport_on_userdebug_build";

    /** Access to wrist temperature body sensors. */
    public static final String OPSTR_BODY_SENSORS_WRIST_TEMPERATURE =
            "android:body_sensors_wrist_temperature";

    /** {@link #sAppOpsToNote} not initialized yet for this op */
    private static final byte SHOULD_COLLECT_NOTE_OP_NOT_INITIALIZED = 0;
    /** Should not collect noting of this app-op in {@link #sAppOpsToNote} */
@@ -2128,6 +2136,7 @@ public class AppOpsManager {
            OP_READ_MEDIA_VISUAL_USER_SELECTED,
            OP_FOREGROUND_SERVICE_SPECIAL_USE,
            OP_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD,
            OP_BODY_SENSORS_WRIST_TEMPERATURE,
    };

    static final AppOpInfo[] sAppOpInfos = new AppOpInfo[]{
@@ -2541,7 +2550,12 @@ public class AppOpsManager {
                OPSTR_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD,
                "CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD")
                .setPermission(Manifest.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD)
                .build()
                .build(),
        new AppOpInfo.Builder(OP_BODY_SENSORS_WRIST_TEMPERATURE,
                OPSTR_BODY_SENSORS_WRIST_TEMPERATURE,
                "BODY_SENSORS_WRIST_TEMPERATURE")
                .setPermission(Manifest.permission.BODY_SENSORS_WRIST_TEMPERATURE)
                .setDefaultMode(AppOpsManager.MODE_ALLOWED).build()
    };

    // The number of longs needed to form a full bitmask of app ops
+1 −0
Original line number Diff line number Diff line
@@ -350,6 +350,7 @@ public abstract class ForegroundServiceTypePolicy {
            new ForegroundServiceTypePermissions(new ForegroundServiceTypePermission[] {
                new RegularPermission(Manifest.permission.ACTIVITY_RECOGNITION),
                new RegularPermission(Manifest.permission.BODY_SENSORS),
                new RegularPermission(Manifest.permission.BODY_SENSORS_WRIST_TEMPERATURE),
                new RegularPermission(Manifest.permission.HIGH_SAMPLING_RATE_SENSORS),
            }, false)
    );
+2 −0
Original line number Diff line number Diff line
@@ -323,6 +323,7 @@ public class ServiceInfo extends ComponentInfo
     * permissions:
     * {@link android.Manifest.permission#ACTIVITY_RECOGNITION},
     * {@link android.Manifest.permission#BODY_SENSORS},
     * {@link android.Manifest.permission#BODY_SENSORS_WRIST_TEMPERATURE},
     * {@link android.Manifest.permission#HIGH_SAMPLING_RATE_SENSORS}.
     */
    @RequiresPermission(
@@ -332,6 +333,7 @@ public class ServiceInfo extends ComponentInfo
            anyOf = {
                Manifest.permission.ACTIVITY_RECOGNITION,
                Manifest.permission.BODY_SENSORS,
                Manifest.permission.BODY_SENSORS_WRIST_TEMPERATURE,
                Manifest.permission.HIGH_SAMPLING_RATE_SENSORS,
            }
    )
+28 −0
Original line number Diff line number Diff line
@@ -1733,6 +1733,34 @@
        android:protectionLevel="dangerous"
        android:permissionFlags="hardRestricted" />

    <!-- Allows an application to access wrist temperature data from the watch sensors.
        <p class="note"><strong>Note: </strong> This permission is for Wear OS only.
        <p>Protection level: dangerous -->
    <permission android:name="android.permission.BODY_SENSORS_WRIST_TEMPERATURE"
                android:permissionGroup="android.permission-group.UNDEFINED"
                android:label="@string/permlab_bodySensorsWristTemperature"
                android:description="@string/permdesc_bodySensorsWristTemperature"
                android:backgroundPermission="android.permission.BODY_SENSORS_WRIST_TEMPERATURE_BACKGROUND"
                android:protectionLevel="dangerous" />

    <!-- Allows an application to access wrist temperature data from the watch sensors.
         If you're requesting this permission, you must also request
         {@link #BODY_SENSORS_WRIST_TEMPERATURE}. Requesting this permission by itself doesn't
         give you heart rate body sensors access.
         <p class="note"><strong>Note: </strong> This permission is for Wear OS only.
         <p>Protection level: dangerous

         <p> This is a hard restricted permission which cannot be held by an app until
         the installer on record allowlists the permission. For more details see
         {@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
    -->
    <permission android:name="android.permission.BODY_SENSORS_WRIST_TEMPERATURE_BACKGROUND"
                android:permissionGroup="android.permission-group.UNDEFINED"
                android:label="@string/permlab_bodySensors_wristTemperature_background"
                android:description="@string/permdesc_bodySensors_wristTemperature_background"
                android:protectionLevel="dangerous"
                android:permissionFlags="hardRestricted" />

    <!-- Allows an app to use fingerprint hardware.
         <p>Protection level: normal
         @deprecated Applications should request {@link
Loading