Guard old way of cloning app for S+ versions
Test: atest android.multiuser.cts.UserManagerTest#testCloneUser,
atest com.android.server.pm.UserManagerTest#testCloneUser.
Bug: 189428742
Change-Id: Ib85f52dca854a6bed0c4c86ff3b11cb089f2c93f
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 7a1c5d0..323f413 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -1311,14 +1311,18 @@
try {
UserHandle user1 = UserHandle.of(userId1);
UserHandle user2 = UserHandle.of(userId2);
-
- if (SdkLevel.isAtLeastS() && (mUserCache.userSharesMediaWithParent(user1)
+ if (Build.VERSION.DEVICE_INITIAL_SDK_INT < Build.VERSION_CODES.S) {
+ if (SdkLevel.isAtLeastS() && (mUserCache.userSharesMediaWithParent(user1)
|| mUserCache.userSharesMediaWithParent(user2))) {
- return true;
- }
- Method isAppCloneUserPair = StorageManager.class.getMethod("isAppCloneUserPair",
+ return true;
+ }
+ Method isAppCloneUserPair = StorageManager.class.getMethod("isAppCloneUserPair",
int.class, int.class);
- return (Boolean) isAppCloneUserPair.invoke(mStorageManager, userId1, userId2);
+ return (Boolean) isAppCloneUserPair.invoke(mStorageManager, userId1, userId2);
+ } else {
+ return (mUserCache.userSharesMediaWithParent(user1)
+ || mUserCache.userSharesMediaWithParent(user2));
+ }
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
Log.w(TAG, "isAppCloneUserPair failed. Users: " + userId1 + " and " + userId2);
return false;