Merge "DO NOT MERGE Fix auto-grant of AR runtime permission if device is upgrading from pre-Q" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1ee3c74d2e
@@ -998,4 +998,10 @@ public abstract class PackageManagerInternal {
|
|||||||
* Returns {@code true} if the package is suspending any packages for the user.
|
* Returns {@code true} if the package is suspending any packages for the user.
|
||||||
*/
|
*/
|
||||||
public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId);
|
public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get installed SDK version of the package
|
||||||
|
* @param pkg package for which to retrieve the installed sdk version
|
||||||
|
*/
|
||||||
|
public abstract int getInstalledSdkVersion(AndroidPackage pkg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25159,6 +25159,11 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
public boolean isSuspendingAnyPackages(String suspendingPackage, int userId) {
|
public boolean isSuspendingAnyPackages(String suspendingPackage, int userId) {
|
||||||
return PackageManagerService.this.isSuspendingAnyPackages(suspendingPackage, userId);
|
return PackageManagerService.this.isSuspendingAnyPackages(suspendingPackage, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInstalledSdkVersion(AndroidPackage pkg) {
|
||||||
|
return PackageManagerService.this.getSettingsVersionForPackage(pkg).sdkVersion;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
|
|||||||
@@ -2755,7 +2755,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|||||||
// uids the original and new state are the same object
|
// uids the original and new state are the same object
|
||||||
if (!origPermissions.hasRequestedPermission(permName)
|
if (!origPermissions.hasRequestedPermission(permName)
|
||||||
&& (pkg.getImplicitPermissions().contains(permName)
|
&& (pkg.getImplicitPermissions().contains(permName)
|
||||||
|| (permName.equals(Manifest.permission.ACTIVITY_RECOGNITION)))) {
|
|| (permName.equals(Manifest.permission.ACTIVITY_RECOGNITION)))) {
|
||||||
if (pkg.getImplicitPermissions().contains(permName)) {
|
if (pkg.getImplicitPermissions().contains(permName)) {
|
||||||
// If permName is an implicit permission, try to auto-grant
|
// If permName is an implicit permission, try to auto-grant
|
||||||
newImplicitPermissions.add(permName);
|
newImplicitPermissions.add(permName);
|
||||||
@@ -2771,22 +2771,28 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|||||||
// or has updated its target SDK and AR is no longer implicit to it.
|
// or has updated its target SDK and AR is no longer implicit to it.
|
||||||
// This is a compatibility workaround for apps when AR permission was
|
// This is a compatibility workaround for apps when AR permission was
|
||||||
// split in Q.
|
// split in Q.
|
||||||
final List<SplitPermissionInfoParcelable> permissionList =
|
// b/210065877: Check that the installed version is pre Q to auto-grant in
|
||||||
getSplitPermissions();
|
// case of OS update
|
||||||
int numSplitPerms = permissionList.size();
|
if (mPackageManagerInt.getInstalledSdkVersion(pkg)
|
||||||
for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) {
|
< Build.VERSION_CODES.Q) {
|
||||||
SplitPermissionInfoParcelable sp = permissionList.get(splitPermNum);
|
final List<SplitPermissionInfoParcelable> permissionList =
|
||||||
String splitPermName = sp.getSplitPermission();
|
getSplitPermissions();
|
||||||
if (sp.getNewPermissions().contains(permName)
|
int numSplitPerms = permissionList.size();
|
||||||
&& origPermissions.hasInstallPermission(splitPermName)) {
|
for (int splitPermNum = 0; splitPermNum < numSplitPerms;
|
||||||
upgradedActivityRecognitionPermission = splitPermName;
|
splitPermNum++) {
|
||||||
newImplicitPermissions.add(permName);
|
SplitPermissionInfoParcelable sp = permissionList.get(splitPermNum);
|
||||||
|
String splitPermName = sp.getSplitPermission();
|
||||||
|
if (sp.getNewPermissions().contains(permName)
|
||||||
|
&& origPermissions.hasInstallPermission(splitPermName)) {
|
||||||
|
upgradedActivityRecognitionPermission = splitPermName;
|
||||||
|
newImplicitPermissions.add(permName);
|
||||||
|
|
||||||
if (DEBUG_PERMISSIONS) {
|
if (DEBUG_PERMISSIONS) {
|
||||||
Slog.i(TAG, permName + " is newly added for "
|
Slog.i(TAG, permName + " is newly added for "
|
||||||
+ pkg.getPackageName());
|
+ pkg.getPackageName());
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user