Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01b5acc4 authored by Abhijeet Kaur's avatar Abhijeet Kaur
Browse files

Make OP_NO_ISOLATED_STORAGE accessible via public API

If OP_NO_ISOLATED_STORAGE app-op is granted it gives apps
legacy-app's access. Update public API for apps to check the
state of legacy external storage access isExternalStorageLegacy()
to respect OP_NO_ISOLATED_STORAGE appop.

Bug: 172934418
Test: android.scopedstorage.cts.device.ScopedStorageDeviceTest#testDefaultNoIsolateStorageFlag
Test: atest CtsScopedStorageHostTest
Change-Id: I5cc2dfabedac57fe4183a586549c979145abcbfb
parent 1afc2cdb
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -1339,8 +1339,17 @@ public class Environment {
        }

        final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
        return appOps.checkOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE,
                uid, context.getOpPackageName()) == AppOpsManager.MODE_ALLOWED;
        final String opPackageName = context.getOpPackageName();

        if (appOps.noteOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE, uid,
                opPackageName) == AppOpsManager.MODE_ALLOWED) {
            return true;
        }

        // Legacy external storage access is granted to instrumentations invoked with
        // "--no-isolated-storage" flag.
        return appOps.noteOpNoThrow(AppOpsManager.OP_NO_ISOLATED_STORAGE, uid,
                opPackageName) == AppOpsManager.MODE_ALLOWED;
    }

    private static boolean isScopedStorageEnforced(boolean defaultScopedStorage,