Merge "Skip permission check for system ui." into tm-dev

This commit is contained in:
Evan Severson
2022-04-04 23:02:34 +00:00
committed by Android (Google) Code Review

View File

@@ -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.EXTRA_PACKAGE_NAME;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; 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.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.hardware.SensorPrivacyManager.EXTRA_ALL_SENSORS; import static android.hardware.SensorPrivacyManager.EXTRA_ALL_SENSORS;
import static android.hardware.SensorPrivacyManager.EXTRA_SENSOR; import static android.hardware.SensorPrivacyManager.EXTRA_SENSOR;
@@ -77,6 +78,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.hardware.ISensorPrivacyListener; import android.hardware.ISensorPrivacyListener;
@@ -155,6 +157,7 @@ public final class SensorPrivacyService extends SystemService {
private final AppOpsManager mAppOpsManager; private final AppOpsManager mAppOpsManager;
private final AppOpsManagerInternal mAppOpsManagerInternal; private final AppOpsManagerInternal mAppOpsManagerInternal;
private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager;
private final PackageManagerInternal mPackageManagerInternal;
private CameraPrivacyLightController mCameraPrivacyLightController; private CameraPrivacyLightController mCameraPrivacyLightController;
@@ -178,6 +181,7 @@ public final class SensorPrivacyService extends SystemService {
mActivityManagerInternal = getLocalService(ActivityManagerInternal.class); mActivityManagerInternal = getLocalService(ActivityManagerInternal.class);
mActivityTaskManager = context.getSystemService(ActivityTaskManager.class); mActivityTaskManager = context.getSystemService(ActivityTaskManager.class);
mTelephonyManager = context.getSystemService(TelephonyManager.class); mTelephonyManager = context.getSystemService(TelephonyManager.class);
mPackageManagerInternal = getLocalService(PackageManagerInternal.class);
mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(); mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl();
} }
@@ -828,6 +832,12 @@ public final class SensorPrivacyService extends SystemService {
* sensor privacy. * sensor privacy.
*/ */
private void enforceObserveSensorPrivacyPermission() { 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, enforcePermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY,
"Observing sensor privacy changes requires the following permission: " "Observing sensor privacy changes requires the following permission: "
+ android.Manifest.permission.OBSERVE_SENSOR_PRIVACY); + android.Manifest.permission.OBSERVE_SENSOR_PRIVACY);