Improve Storage Permission Handling #14229
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Tests written, or not not needed
Remove the internal boolean flag used to determine whether the app needs to request storage permission. The app should always request the necessary permission if it has not been granted.
Simplify the StoragePermissionDialog logic by removing the external listener. The dialog’s sole responsibility should be to either open the app settings to request “Manage All Files” permission or request read-only media access. Decoupling this functionality from external listeners improves code readability and reduces complexity
Use precise and descriptive function names to improve code clarity and maintainability
Remove redundant checks in the requestStoragePermissionIfNeeded() function. This function already internally verifies whether storage permission is required, making additional checks unnecessary
Remove the readOnly parameter as its logic is implicitly tied to Android 11 and above (API level 30+). The current implementation redundantly checks the same condition (readOnly && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) multiple times, which is unnecessary and can lead to confusion
Add READ_MEDIA_VISUAL_USER_SELECTED permission (Documentation)