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
This commit is contained in:
Hai Zhang
2019-10-14 14:09:35 -07:00
parent f11cb15654
commit 408ca7662c

View File

@@ -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)) {