Skip to content

Commit 1dfa521

Browse files
emmaussMrJul
authored andcommitted
Fix crash when creating documents in an opened folder on android (#18651)
* fix crash when creating documents in an opened folder * fix crash on folder delete on android
1 parent 99ab8ed commit 1dfa521

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ public AndroidStorageFolder(Activity activity, AndroidUri uri, bool needsExterna
159159
public Task<IStorageFile?> CreateFileAsync(string name)
160160
{
161161
var mimeType = MimeTypeMap.Singleton?.GetMimeTypeFromExtension(MimeTypeMap.GetFileExtensionFromUrl(name)) ?? "application/octet-stream";
162-
var newFile = DocumentsContract.CreateDocument(Activity.ContentResolver!, Uri, mimeType, name);
162+
var treeUri = DocumentsContract.BuildDocumentUriUsingTree(Uri, DocumentsContract.GetTreeDocumentId(Uri));
163+
var newFile = DocumentsContract.CreateDocument(Activity.ContentResolver!, treeUri!, mimeType, name);
163164
if(newFile == null)
164165
{
165166
return Task.FromResult<IStorageFile?>(null);
@@ -170,7 +171,8 @@ public AndroidStorageFolder(Activity activity, AndroidUri uri, bool needsExterna
170171

171172
public Task<IStorageFolder?> CreateFolderAsync(string name)
172173
{
173-
var newFolder = DocumentsContract.CreateDocument(Activity.ContentResolver!, Uri, DocumentsContract.Document.MimeTypeDir, name);
174+
var treeUri = DocumentsContract.BuildDocumentUriUsingTree(Uri, DocumentsContract.GetTreeDocumentId(Uri));
175+
var newFolder = DocumentsContract.CreateDocument(Activity.ContentResolver!, treeUri!, DocumentsContract.Document.MimeTypeDir, name);
174176
if (newFolder == null)
175177
{
176178
return Task.FromResult<IStorageFolder?>(null);
@@ -205,7 +207,8 @@ async Task DeleteContents(AndroidStorageFolder storageFolder)
205207
}
206208
}
207209

208-
DocumentsContract.DeleteDocument(Activity.ContentResolver!, storageFolder.Uri);
210+
var treeUri = DocumentsContract.BuildDocumentUriUsingTree(storageFolder.Uri, DocumentsContract.GetTreeDocumentId(storageFolder.Uri));
211+
DocumentsContract.DeleteDocument(Activity.ContentResolver!, treeUri!);
209212
}
210213
}
211214

0 commit comments

Comments
 (0)