Skip to content

Commit bc1133c

Browse files
author
lask
authored
Merge pull request #54 from lakscastro/master
`v0.3.1` to fix critical exception on `listFiles` API
2 parents 90b7331 + 82cf746 commit bc1133c

File tree

9 files changed

+37
-14
lines changed

9 files changed

+37
-14
lines changed

.all-contributorsrc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"files": [
33
"README.md",
4-
"docs/Getting Started.md"
4+
"docs/index.md"
55
],
66
"imageSize": 100,
77
"contributorsPerLine": 7,
@@ -58,6 +58,15 @@
5858
"bug",
5959
"ideas"
6060
]
61+
},
62+
{
63+
"login": "EternityForest",
64+
"name": "Daniel Dunn",
65+
"avatar_url": "https://avatars.githubusercontent.com/u/758047?v=4",
66+
"profile": "https://eternityforest.com",
67+
"contributions": [
68+
"bug"
69+
]
6170
}
6271
],
6372
"projectName": "shared-storage",

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Bug report
33
about: Create a report to help us improve
44
title: ''
55
labels: bug
6-
assignees: lakscastro
6+
assignees: ''
77

88
---
99

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## 0.3.1
2+
3+
Minor improvements and bug fixes:
4+
5+
- Crash when ommiting `DocumentFileColumn.id` column on `listFiles` API. Thanks to @EternityForest.
6+
- Updated docs to info that now `DocumentFileColumn.id` column is optional when calling `listFiles`.
7+
18
## 0.3.0
29

310
Major release focused on support for `Storage Access Framework`.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ These are the brilliant minds behind the development of this plugin!
4646
<td align="center"><a href="https://www.bibliotecaortodoxa.ro"><img src="https://avatars.githubusercontent.com/u/1148228?v=4?s=100" width="100px;" alt=""/><br /><sub><b>www.bibliotecaortodoxa.ro</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/commits?author=aplicatii-romanesti" title="Code">💻</a> <a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Aaplicatii-romanesti" title="Bug reports">🐛</a> <a href="#ideas-aplicatii-romanesti" title="Ideas, Planning, & Feedback">🤔</a></td>
4747
<td align="center"><a href="https://github.com/dangilbert"><img src="https://avatars.githubusercontent.com/u/6799566?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dangilbert</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/commits?author=dangilbert" title="Code">💻</a> <a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Adangilbert" title="Bug reports">🐛</a></td>
4848
<td align="center"><a href="https://github.com/dhaval-k-simformsolutions"><img src="https://avatars.githubusercontent.com/u/90894202?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dhaval-k-simformsolutions</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Adhaval-k-simformsolutions" title="Bug reports">🐛</a> <a href="#ideas-dhaval-k-simformsolutions" title="Ideas, Planning, & Feedback">🤔</a></td>
49+
<td align="center"><a href="https://eternityforest.com"><img src="https://avatars.githubusercontent.com/u/758047?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Dunn</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/issues?q=author%3AEternityForest" title="Bug reports">🐛</a></td>
4950
</tr>
5051
</table>
5152

android/src/main/kotlin/io/lakscastro/sharedstorage/storageaccessframework/lib/DocumentCommon.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ import android.os.Build
88
import android.provider.DocumentsContract
99
import android.util.Base64
1010
import androidx.annotation.RequiresApi
11-
import androidx.annotation.RestrictTo
1211
import androidx.documentfile.provider.DocumentFile
1312
import io.lakscastro.sharedstorage.plugin.API_19
1413
import io.lakscastro.sharedstorage.plugin.API_21
1514
import io.lakscastro.sharedstorage.plugin.API_24
1615
import java.io.ByteArrayOutputStream
1716
import java.io.Closeable
18-
import java.io.File
1917

2018
/**
2119
* Helper class to make more easy to handle callbacks using Kotlin syntax
@@ -174,12 +172,17 @@ fun traverseDirectoryEntries(
174172
while (dirNodes.isNotEmpty()) {
175173
val (parent, children) = dirNodes.removeAt(0)
176174

177-
val requiredColumns = if (rootOnly) emptyArray() else arrayOf(
178-
DocumentsContract.Document.COLUMN_MIME_TYPE,
179-
DocumentsContract.Document.COLUMN_DOCUMENT_ID
180-
)
175+
val requiredColumns =
176+
if (rootOnly) emptyArray() else arrayOf(DocumentsContract.Document.COLUMN_MIME_TYPE)
177+
178+
val intrinsicColumns =
179+
arrayOf(DocumentsContract.Document.COLUMN_DOCUMENT_ID)
181180

182-
val projection = arrayOf(*columns, *requiredColumns).toSet().toTypedArray()
181+
val projection = arrayOf(
182+
*columns,
183+
*requiredColumns,
184+
*intrinsicColumns
185+
).toSet().toTypedArray()
183186

184187
val cursor = contentResolver.query(
185188
children,
@@ -198,7 +201,7 @@ fun traverseDirectoryEntries(
198201
while (cursor.moveToNext()) {
199202
val data = mutableMapOf<String, Any>()
200203

201-
for (column in columns) {
204+
for (column in projection) {
202205
data[column] = cursorHandlerOf(typeOfColumn(column)!!)(
203206
cursor,
204207
cursor.getColumnIndexOrThrow(column)
@@ -220,7 +223,7 @@ fun traverseDirectoryEntries(
220223
)
221224
)
222225

223-
if (isDirectory != null && isDirectory && !rootOnly) {
226+
if (isDirectory == true && !rootOnly) {
224227
val nextChildren =
225228
DocumentsContract.buildChildDocumentsUriUsingTree(rootUri, id)
226229

docs/Usage/Storage Access Framework.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ if (grantedUri != null) {
6868

6969
This method list files lazily **over a granted uri:**
7070

71+
> **Note** `DocumentFileColumn.id` is optional. It is required to fetch the file list from native API. So it is enabled regardless if you include this column or not. And this applies only to this API (`listFiles`).
72+
7173
```dart
7274
/// *Must* be a granted uri from `openDocumentTree`
7375
final Uri myGrantedUri = ...
@@ -83,7 +85,7 @@ const List<DocumentFileColumn> columns = <DocumentFileColumn>[
8385
DocumentFileColumn.displayName,
8486
DocumentFileColumn.size,
8587
DocumentFileColumn.lastModified,
86-
DocumentFileColumn.id,
88+
DocumentFileColumn.id, // Optional column, will be available/queried regardless if is or not included here
8789
DocumentFileColumn.mimeType,
8890
];
8991

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ Most Flutter plugins use Android API's under the hood. So this plugin does the s
7070
These are the brilliant minds behind the development of this plugin!
7171

7272
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
73-
7473
<!-- prettier-ignore-start -->
7574
<!-- markdownlint-disable -->
7675
<table>
@@ -80,6 +79,7 @@ These are the brilliant minds behind the development of this plugin!
8079
<td align="center"><a href="https://www.bibliotecaortodoxa.ro"><img src="https://avatars.githubusercontent.com/u/1148228?v=4?s=100" width="100px;" alt=""/><br /><sub><b>www.bibliotecaortodoxa.ro</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/commits?author=aplicatii-romanesti" title="Code">💻</a> <a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Aaplicatii-romanesti" title="Bug reports">🐛</a> <a href="#ideas-aplicatii-romanesti" title="Ideas, Planning, & Feedback">🤔</a></td>
8180
<td align="center"><a href="https://github.com/dangilbert"><img src="https://avatars.githubusercontent.com/u/6799566?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dangilbert</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/commits?author=dangilbert" title="Code">💻</a> <a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Adangilbert" title="Bug reports">🐛</a></td>
8281
<td align="center"><a href="https://github.com/dhaval-k-simformsolutions"><img src="https://avatars.githubusercontent.com/u/90894202?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dhaval-k-simformsolutions</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/issues?q=author%3Adhaval-k-simformsolutions" title="Bug reports">🐛</a> <a href="#ideas-dhaval-k-simformsolutions" title="Ideas, Planning, & Feedback">🤔</a></td>
82+
<td align="center"><a href="https://eternityforest.com"><img src="https://avatars.githubusercontent.com/u/758047?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Dunn</b></sub></a><br /><a href="https://github.com/lakscastro/shared-storage/issues?q=author%3AEternityForest" title="Bug reports">🐛</a></td>
8383
</tr>
8484
</table>
8585

example/lib/screens/folder_files/folder_file_list.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ class _FolderFileListState extends State<FolderFileList> {
159159
DocumentFileColumn.displayName,
160160
DocumentFileColumn.size,
161161
DocumentFileColumn.lastModified,
162+
// Optional column (this can't be removed because it's required to list files)
162163
DocumentFileColumn.id,
163164
DocumentFileColumn.mimeType,
164165
];

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: shared_storage
22
description: "Flutter plugin to get Android shared folders like DCIM, Downloads, Video, Audio. Works with Android 4.1 (API Level 16+)"
3-
version: 0.3.0
3+
version: 0.3.1
44
homepage: https://github.com/lakscastro/shared-storage
55
repository: https://github.com/lakscastro/shared-storage
66
issue_tracker: https://github.com/lakscastro/shared-storage/issues

0 commit comments

Comments
 (0)