Skip to content

Commit e85edd3

Browse files
author
naresh chocha
committed
feat: handle empty selection in file pickers
Adds error messages and logic to file pickers to handle cases where no file is selected. - Includes new string resources for "no data" errors in document and media pickers. - Modifies `DocumentFilePickerActivity` and `MediaFilePickerActivity` to check for `clipData` when `data` is null and set a canceled result with the appropriate error message if no file is found.
1 parent 2123815 commit e85edd3

3 files changed

Lines changed: 14 additions & 0 deletions

File tree

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/DocumentFilePickerActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ internal class DocumentFilePickerActivity : ComponentActivity() {
5757
val data = result.data?.data
5858
val filePath = data?.let { FileUtils.getRealPath(this, it) }
5959
setSuccessResult(data, filePath)
60+
} else if (result.data?.clipData != null) {
61+
val uri = result.data?.getClipDataUris()?.firstOrNull()
62+
val filePath = uri?.let { FileUtils.getRealPath(this, it) }
63+
setSuccessResult(uri, filePath)
64+
} else {
65+
setCanceledResult(getString(R.string.document_file_picker_no_data_error))
6066
}
6167
} else {
6268
setCanceledResult("File Picker Result Error: ${result.resultCode}")

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/MediaFilePickerActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ internal class MediaFilePickerActivity : ComponentActivity() {
5858
val data = result.data?.data
5959
val filePath = data?.let { FileUtils.getRealPath(this, it) }
6060
setSuccessResult(data, filePath)
61+
} else if (result.data?.clipData != null) {
62+
val uri = result.data?.getClipDataUris()?.firstOrNull()
63+
val filePath = uri?.let { FileUtils.getRealPath(this, it) }
64+
setSuccessResult(uri, filePath)
65+
} else {
66+
setCanceledResult(getString(R.string.media_file_picker_no_data_error))
6167
}
6268
} else {
6369
setCanceledResult("File Picker Result Error: ${result.resultCode}")

filepickerlibrary/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@
4848
<!-- Document file picker configuration error message -->
4949
<string name="document_file_picker_config_null_error">The document picker configuration is missing.</string>
5050
<string name="document_file_picker_permission_rationale">This app requires access to your storage in order to pick and manage documents. Please grant the storage permission to proceed.</string>
51+
<string name="document_file_picker_no_data_error">No Document files found in the selected directory.</string>
5152

5253
<!-- Media file picker configuration error message -->
5354
<string name="media_file_picker_config_null_error">The media file picker configuration is missing.</string>
5455
<string name="media_file_picker_permission_rationale">This app requires access to your storage to pick media files such as images and videos. Please grant the storage permission to continue.</string>
56+
<string name="media_file_picker_no_data_error">No media files found in the selected directory.</string>
5557

5658
</resources>

0 commit comments

Comments
 (0)