Device: Huawei nova 7i, EMUI / Android 10 (API 29)
App version: REX Player v5.1.0 (GitHub build)
Problem:
Trying to delete any video from inside the app always ends with the "Failed to delete" toast. Nothing helps (permissions granted, cache cleared, latest version).
Technical analysis (from source code):
- PermissionUtils.StorageOps.deleteVideos() takes the direct path because SCOPED_STORAGE_ONLY=false and hasManageStoragePermission() returns true for all devices below Android 11. The direct path calls File(video.path).delete().
- On Android 10, the app runs under scoped storage: requestLegacyExternalStorage="true" is ignored because targetSdk (36) > 29, WRITE_EXTERNAL_STORAGE is capped with android:maxSdkVersion="28", and MANAGE_EXTERNAL_STORAGE has no effect on API 29. Therefore raw File.delete() on shared media can never succeed, and every delete is counted as "failed".
- The scoped fallback (deleteVideosScoped) is never used on Q, and even if it were, contentResolver.delete() on Android 10 throws RecoverableSecurityException for media owned by other apps, and that exception is not handled — the API 29 user-confirmation flow (RecoverableSecurityException.getUserAction() -> IntentSenderRequest / startIntentSenderForResult) is not implemented anywhere in the app. createDeleteRequest() is only used for Android 11+ (Build.VERSION_CODES.R).
Expected behavior:
On Android 10 the app should either catch RecoverableSecurityException and show the system delete-confirmation dialog, or fall back to MediaStore createDeleteRequest-equivalent handling for Q, so that deletion works like it does on Android 11+.
Steps to reproduce:
- Open REX Player on an Android 10 device.
- Long-press a video and choose Delete.
- Toast "Failed to delete" is shown; the file remains.
Please add proper API 29 (Q) deletion handling. Thanks for the great player!
Device: Huawei nova 7i, EMUI / Android 10 (API 29)
App version: REX Player v5.1.0 (GitHub build)
Problem:
Trying to delete any video from inside the app always ends with the "Failed to delete" toast. Nothing helps (permissions granted, cache cleared, latest version).
Technical analysis (from source code):
Expected behavior:
On Android 10 the app should either catch RecoverableSecurityException and show the system delete-confirmation dialog, or fall back to MediaStore createDeleteRequest-equivalent handling for Q, so that deletion works like it does on Android 11+.
Steps to reproduce:
Please add proper API 29 (Q) deletion handling. Thanks for the great player!