diff options
| -rw-r--r-- | services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java index 2f68f56a7de0..bce1cce0f47f 100644 --- a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java +++ b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java @@ -29,6 +29,7 @@ import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.content.Intent.EXTRA_PACKAGE_NAME; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; +import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.hardware.SensorPrivacyManager.EXTRA_ALL_SENSORS; import static android.hardware.SensorPrivacyManager.EXTRA_SENSOR; @@ -77,6 +78,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.pm.PackageManagerInternal; import android.content.res.Configuration; import android.graphics.drawable.Icon; import android.hardware.ISensorPrivacyListener; @@ -155,6 +157,7 @@ public final class SensorPrivacyService extends SystemService { private final AppOpsManager mAppOpsManager; private final AppOpsManagerInternal mAppOpsManagerInternal; private final TelephonyManager mTelephonyManager; + private final PackageManagerInternal mPackageManagerInternal; private CameraPrivacyLightController mCameraPrivacyLightController; @@ -178,6 +181,7 @@ public final class SensorPrivacyService extends SystemService { mActivityManagerInternal = getLocalService(ActivityManagerInternal.class); mActivityTaskManager = context.getSystemService(ActivityTaskManager.class); mTelephonyManager = context.getSystemService(TelephonyManager.class); + mPackageManagerInternal = getLocalService(PackageManagerInternal.class); mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(); } @@ -828,6 +832,12 @@ public final class SensorPrivacyService extends SystemService { * sensor privacy. */ private void enforceObserveSensorPrivacyPermission() { + String systemUIPackage = mContext.getString(R.string.config_systemUi); + if (Binder.getCallingUid() == mPackageManagerInternal + .getPackageUid(systemUIPackage, MATCH_SYSTEM_ONLY, UserHandle.USER_SYSTEM)) { + // b/221782106, possible race condition with role grant might bootloop device. + return; + } enforcePermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY, "Observing sensor privacy changes requires the following permission: " + android.Manifest.permission.OBSERVE_SENSOR_PRIVACY); |