From 408ca7662cb283a6dc82016a8e4a8ff27980a5e8 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 14 Oct 2019 14:09:35 -0700 Subject: [PATCH] Don't set REVOKED_COMPAT for modern apps. Otherwise the permission will be revoked in restorePermissionState(), even if it's not a legacy app. Fixes: 142615915 Fixes: 142680771 Test: atest PermissionTest Test: atest PermissionFlagsTest Test: atest SplitPermissionTest Change-Id: I7e222054ca66c2dff252240f5a6016f5e02c2ade --- .../core/java/com/android/server/appop/AppOpsService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 6c4cc2d43866f..2ac6eb01f9daa 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -68,6 +68,7 @@ import android.hardware.camera2.CameraDevice.CAMERA_AUDIO_RESTRICTION; import android.net.Uri; import android.os.AsyncTask; import android.os.Binder; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -1398,6 +1399,12 @@ public class AppOpsService extends IAppOpsService.Stub { } private void updatePermissionRevokedCompat(int uid, int switchCode, int mode) { + PackageManagerInternal packageManagerInternal = LocalServices.getService( + PackageManagerInternal.class); + if (packageManagerInternal.getUidTargetSdkVersion(uid) >= Build.VERSION_CODES.M) { + return; + } + PackageManager packageManager = mContext.getPackageManager(); String[] packageNames = packageManager.getPackagesForUid(uid); if (ArrayUtils.isEmpty(packageNames)) {