feat: improve MediaStore URI resolution for file deletions#2123
Merged
Conversation
Enhances the reliability of `MediaStore.createDeleteRequest` on Android 11+ by implementing a robust URI resolution strategy. Instead of relying solely on song IDs, the system now validates candidate URIs against the `ContentResolver` using IDs, file paths, and existing URI strings to ensure they are valid for system deletion prompts. - Added `MediaStorePermissionHelper.resolveDeleteRequestUri` to verify URI existence via `contentResolver.query`. - Updated `PlayerViewModel` to perform URI resolution on `Dispatchers.IO` before triggering deletion intents. - Refactored `getMediaStoreUri` to use `MediaStore.Audio.Media.getContentUri` with `VOLUME_EXTERNAL` for Android R+. - Added error handling for `IllegalArgumentException` and `SecurityException` when creating delete requests. - Introduced `MediaStorePermissionHelperTest` to validate URI string parsing and fallback logic. - Cleaned up unused imports and centralized intent sender creation in `FileDeletionUtils`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Enhances the reliability of
MediaStore.createDeleteRequeston Android 11+ by implementing a robust URI resolution strategy. Instead of relying solely on song IDs, the system now validates candidate URIs against theContentResolverusing IDs, file paths, and existing URI strings to ensure they are valid for system deletion prompts.MediaStorePermissionHelper.resolveDeleteRequestUrito verify URI existence viacontentResolver.query.PlayerViewModelto perform URI resolution onDispatchers.IObefore triggering deletion intents.getMediaStoreUrito useMediaStore.Audio.Media.getContentUriwithVOLUME_EXTERNALfor Android R+.IllegalArgumentExceptionandSecurityExceptionwhen creating delete requests.MediaStorePermissionHelperTestto validate URI string parsing and fallback logic.FileDeletionUtils.