When Android Q Beta 1 was released, the main surprising change for developers was what Google calls “scoped storage”. The main two reasons for making this change: Security & to reduce leftover "app clutter". In brief, our ability to work
with files and filesystems will get substantially curtailed, even for apps with a targetSdkVersion of 28 or lower.
However in subsequent Android Q beta releases 4 & 5, it has now been finalised that Apps can either have normal or legacy storage.
With legacy storage, everything behaves as it did in Android 4.4 through 9.0. Without legacy storage, apps still can use getExternalFilesDir() and similar directories without permissions. However, the rest of external storage appears to be inaccessible via filesystem APIs. As per documentation :
“An app that has a filtered view always has read/write access to the files that it creates, both inside and outside its app-specific directory”
The idea is that we should start adapting now. For some apps, switching to the Storage Access Framework (e.g. ACTION_OPEN_DOCUMENT) will be easy. For some apps, it will be painful. We must not wait until 2020, as mentioned in documentation. We should Start migrating our apps now to use the alternative approaches. Through this talk we will try to assess different approaches to be adopted for the changes coming via scoped storage and making sure that apps continue to work seamlessly.