diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java index ecdc803c00748..022d213e84dad 100644 --- a/core/java/android/os/Environment.java +++ b/core/java/android/os/Environment.java @@ -1361,6 +1361,18 @@ public class Environment { return false; } + // Apps with PROPERTY_NO_APP_DATA_STORAGE should not be allowed in scoped storage + final String packageName = AppGlobals.getInitialPackage(); + try { + final PackageManager.Property noAppStorageProp = packageManager.getProperty( + PackageManager.PROPERTY_NO_APP_DATA_STORAGE, packageName); + if (noAppStorageProp != null && noAppStorageProp.getBoolean()) { + return false; + } + } catch (PackageManager.NameNotFoundException ignore) { + // Property not defined for the package + } + boolean defaultScopedStorage = Compatibility.isChangeEnabled(DEFAULT_SCOPED_STORAGE); boolean forceEnableScopedStorage = Compatibility.isChangeEnabled( FORCE_ENABLE_SCOPED_STORAGE); diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 991c7a9e0a4d3..90fec2920a658 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -3055,19 +3055,7 @@ class StorageManagerService extends IStorageManager.Stub return true; } - if (packageName == null) { - return false; - } - - final int packageUid = mPmInternal.getPackageUid(packageName, - PackageManager.MATCH_DEBUG_TRIAGED_MISSING, UserHandle.getUserId(callerUid)); - - if (DEBUG_OBB) { - Slog.d(TAG, "packageName = " + packageName + ", packageUid = " + - packageUid + ", callerUid = " + callerUid); - } - - return callerUid == packageUid; + return mPmInternal.isSameApp(packageName, callerUid, UserHandle.getUserId(callerUid)); } @Override