From 5f7462cf335ee692c91f512080b926ceaebfab95 Mon Sep 17 00:00:00 2001 From: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com> Date: Sun, 9 Aug 2026 16:22:53 +0530 Subject: [PATCH] fix(sdcard): prevent crash when listing non-tree SAF URIs --- src/plugins/sdcard/src/android/SDcard.java | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/plugins/sdcard/src/android/SDcard.java b/src/plugins/sdcard/src/android/SDcard.java index 19482901a1..1b33e7edef 100644 --- a/src/plugins/sdcard/src/android/SDcard.java +++ b/src/plugins/sdcard/src/android/SDcard.java @@ -940,23 +940,28 @@ private void listDir(String src, String parentId, CallbackContext callback) { .execute( new Runnable() { public void run() { - Uri srcUri = Uri.parse(src); ContentResolver contentResolver = context.getContentResolver(); String parentDocId = parentId; - - if (parentDocId == null) { - parentDocId = DocumentsContract.getTreeDocumentId(srcUri); - } - - Uri childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree( - srcUri, - parentDocId - ); - JSONArray result = new JSONArray(); Cursor cursor = null; try { + Uri srcUri = Uri.parse(src); + + if (parentDocId == null) { + if (!DocumentsContract.isTreeUri(srcUri)) { + Log.w("sdCard", "Cannot list non-tree URI: " + src); + callback.error("Cannot read directory."); + return; + } + parentDocId = DocumentsContract.getTreeDocumentId(srcUri); + } + + Uri childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree( + srcUri, + parentDocId + ); + cursor = contentResolver.query( childrenUri, new String[] {