developer.android.com/guide/topics/p is how apps were supposed to access storage since Android 4.4. It opens a system file picker and the user chooses the files / directories. This way, there are no permissions, and they can select files / directories from external drives or app providers.
Conversation
Unfortunately, there was massive pushback against Scoped Storage from anti-privacy app developers. They successfully misrepresented the feature and used journalists and power user communities as tools to fight against it. Apps can now opt-out of it until the Android R API level.
1
2
3
Is there any mitigation in a foreseable future? Can deal with this situation and support the Scoped-Storage-like features?
1
1
Scoped Storage will be available within a month or two. The approach is fully compatible with legacy applications as I explained above. There is no need for something like Scoped Storage rather than using the actual feature so I don't really understand the question you're asking.
2
1
GrapheneOS has planned to have a feature like Scoped Storage for many years. This issue was filed in 2016, but it was planned long before that: github.com/AndroidHardeni. The project hasn't had the resources to implement it, but now it can simply fully enable the standard feature.
1
1
3
It would have been better for GrapheneOS if the campaign against this privacy / security enhancement hadn't been successful. Apps using the Storage Access Framework (i.e. having users choose files / directories via the system UI) provides better UX than scoping legacy access.
2
1
4
Users on GrapheneOS will have a worse experience due to that anti-privacy activism and will need to learn to use the system file manager to move files / directories to and from the emulated external storage directories. The scoped access to external storage is for compatibility.
1
2
3
As an example, a third party file manager implemented via SAF will continue working in the Scoped Storage model. It asks the user to choose the access scope, and they can make the explicit decision to select the root of the storage volume but the UI leaves it entirely up to them.
1
2
It fits naturally into most apps, since from a user perspective, it simply means that apps are using the system file management interface. Apps requesting the legacy permissions and providing their own interface was usually a worse experience aside from privacy / security issues.
1
1
3
An app can still provide their own file management interface though, by asking the user to select a directory. So, even the case of a generic file manager case still works fine. Obviously, many app developers don't want users to have control, and are completely opposed to this.
1
2
However, since the Scoped Storage model being mandatory has been delayed until the next major API level in Android R, apps can keep relying on the legacy storage model for an extra year and users will have a worse experience with those apps with the feature enabled universally.
An app using the legacy model will end up using their scoped external storage directory as if it's the external storage root. Users will often need to manually move files into the app's scoped directory to share files with it, and move files out they want saved after uninstall.
1
2
I'll need to explain it to GrapheneOS users, and they'll need to deal with it rather than apps adapting. There will be another fight next year with Android R. Maybe next time, journalists will push Google to ship this important privacy feature instead of spreading FUD about it.
2

