diff --git a/core/java/android/hardware/fingerprint/FingerprintSensorPropertiesInternal.java b/core/java/android/hardware/fingerprint/FingerprintSensorPropertiesInternal.java
index 8fbe05c..7ea88a1 100644
--- a/core/java/android/hardware/fingerprint/FingerprintSensorPropertiesInternal.java
+++ b/core/java/android/hardware/fingerprint/FingerprintSensorPropertiesInternal.java
@@ -40,6 +40,7 @@
      */
     public final @FingerprintSensorProperties.SensorType int sensorType;
     public final boolean halControlsIllumination;
+    public final boolean halHandlesDisplayTouches;
 
     private final List<SensorLocationInternal> mSensorLocations;
 
@@ -48,6 +49,7 @@
             @NonNull List<ComponentInfoInternal> componentInfo,
             @FingerprintSensorProperties.SensorType int sensorType,
             boolean halControlsIllumination,
+            boolean halHandlesDisplayTouches,
             boolean resetLockoutRequiresHardwareAuthToken,
             @NonNull List<SensorLocationInternal> sensorLocations) {
         // IBiometricsFingerprint@2.1 handles lockout in the framework, so the challenge is not
@@ -58,6 +60,7 @@
             resetLockoutRequiresHardwareAuthToken, false /* resetLockoutRequiresChallenge */);
         this.sensorType = sensorType;
         this.halControlsIllumination = halControlsIllumination;
+        this.halHandlesDisplayTouches = halHandlesDisplayTouches;
         this.mSensorLocations = List.copyOf(sensorLocations);
     }
 
@@ -71,7 +74,8 @@
             boolean resetLockoutRequiresHardwareAuthToken) {
         // TODO(b/179175438): Value should be provided from the HAL
         this(sensorId, strength, maxEnrollmentsPerUser, componentInfo, sensorType,
-                false /* halControlsIllumination */, resetLockoutRequiresHardwareAuthToken,
+                false /* halControlsIllumination */, false /* halHandlesDisplayTouches */,
+                resetLockoutRequiresHardwareAuthToken,
                 List.of(new SensorLocationInternal("" /* displayId */, 540 /* sensorLocationX */,
                         1636 /* sensorLocationY */, 130 /* sensorRadius */)));
     }
@@ -80,6 +84,7 @@
         super(in);
         sensorType = in.readInt();
         halControlsIllumination = in.readBoolean();
+        halHandlesDisplayTouches = in.readBoolean();
         mSensorLocations = in.createTypedArrayList(SensorLocationInternal.CREATOR);
     }
 
@@ -106,6 +111,7 @@
         super.writeToParcel(dest, flags);
         dest.writeInt(sensorType);
         dest.writeBoolean(halControlsIllumination);
+        dest.writeBoolean(halHandlesDisplayTouches);
         dest.writeTypedList(mSensorLocations);
     }
 
diff --git a/core/java/android/hardware/fingerprint/HidlFingerprintSensorConfig.java b/core/java/android/hardware/fingerprint/HidlFingerprintSensorConfig.java
index 9febcab..95721b7 100644
--- a/core/java/android/hardware/fingerprint/HidlFingerprintSensorConfig.java
+++ b/core/java/android/hardware/fingerprint/HidlFingerprintSensorConfig.java
@@ -76,6 +76,7 @@
         commonProps.maxEnrollmentsPerUser = context.getResources().getInteger(
                 R.integer.config_fingerprintMaxTemplatesPerUser);
         halControlsIllumination = false;
+        halHandlesDisplayTouches = false;
         sensorLocations = new SensorLocation[1];
 
         // Non-empty workaroundLocations indicates that the sensor is SFPS.
diff --git a/core/tests/coretests/src/android/hardware/fingerprint/FingerprintManagerTest.java b/core/tests/coretests/src/android/hardware/fingerprint/FingerprintManagerTest.java
index c3ea7d3..8bed636 100644
--- a/core/tests/coretests/src/android/hardware/fingerprint/FingerprintManagerTest.java
+++ b/core/tests/coretests/src/android/hardware/fingerprint/FingerprintManagerTest.java
@@ -110,6 +110,7 @@
                 new ArrayList<>() /* componentInfo */,
                 FingerprintSensorProperties.TYPE_UNKNOWN,
                 true /* halControlsIllumination */,
+                false /* halHandlesDisplayTouches */,
                 true /* resetLockoutRequiresHardwareAuthToken */,
                 new ArrayList<>() /* sensorLocations */));
     }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
index ffabc83..d1ba7f8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
@@ -104,6 +104,7 @@
                         ),
                         FingerprintSensorProperties.TYPE_REAR,
                         false /* halControlsIllumination */,
+                        false /* halHandlesDisplayTouches */,
                         true /* resetLockoutRequiresHardwareAuthToken */,
                         listOf<SensorLocationInternal>(
                             SensorLocationInternal(
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/FingerprintPropertyRepository.kt b/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/FingerprintPropertyRepository.kt
index c4e1ccf..3d56ebb 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/FingerprintPropertyRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/FingerprintPropertyRepository.kt
@@ -163,6 +163,7 @@
                 listOf<ComponentInfoInternal>(),
                 FingerprintSensorProperties.TYPE_UNKNOWN,
                 false /* halControlsIllumination */,
+                false /* halHandlesDisplayTouches */,
                 true /* resetLockoutRequiresHardwareAuthToken */,
                 listOf<SensorLocationInternal>(SensorLocationInternal.DEFAULT),
             )
@@ -174,6 +175,7 @@
                 listOf<ComponentInfoInternal>(),
                 FingerprintSensorProperties.TYPE_UNKNOWN,
                 false /* halControlsIllumination */,
+                false /* halHandlesDisplayTouches */,
                 true /* resetLockoutRequiresHardwareAuthToken */,
                 listOf<SensorLocationInternal>(SensorLocationInternal.DEFAULT),
             )
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index b6768c9..abe2fca2 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -1011,6 +1011,7 @@
             return new FingerprintSensorPropertiesInternal(sensorId,
                     Utils.authenticatorStrengthToPropertyStrength(strength), maxEnrollmentsPerUser,
                     componentInfo, sensorType, true /* halControlsIllumination */,
+                    false /* halHandlesDisplayTouches */,
                     resetLockoutRequiresHardwareAuthToken,
                     List.of(new SensorLocationInternal("" /* display */, udfpsProps[0],
                             udfpsProps[1], udfpsProps[2])));
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
index c18d925..0ee5958 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
@@ -750,6 +750,9 @@
 
     @Override
     public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
+        if (mFingerprintSensors.get(sensorId).getSensorProperties().halHandlesDisplayTouches) {
+            return;
+        }
         mFingerprintSensors.get(sensorId).getScheduler().getCurrentClientIfMatches(
                 requestId, (client) -> {
                     if (!(client instanceof Udfps)) {
@@ -762,6 +765,9 @@
 
     @Override
     public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
+        if (mFingerprintSensors.get(sensorId).getSensorProperties().halHandlesDisplayTouches) {
+            return;
+        }
         mFingerprintSensors.get(sensorId).getScheduler().getCurrentClientIfMatches(
                 requestId, (client) -> {
                     if (!(client instanceof Udfps)) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
index 25d1fe7..77f35b2 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
@@ -224,6 +224,7 @@
                 componentInfo,
                 prop.sensorType,
                 prop.halControlsIllumination,
+                prop.halHandlesDisplayTouches,
                 resetLockoutRequiresHardwareAuthToken,
                 !workaroundLocations.isEmpty() ? workaroundLocations :
                         Arrays.stream(prop.sensorLocations).map(location ->
