|
|
|
@ -150,10 +150,7 @@ internal class AndroidStorageProvider : IStorageProvider |
|
|
|
intent = intent.PutExtra(Intent.ExtraMimeTypes, mimeTypes); |
|
|
|
} |
|
|
|
|
|
|
|
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri) |
|
|
|
{ |
|
|
|
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri); |
|
|
|
} |
|
|
|
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation); |
|
|
|
|
|
|
|
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Select file"); |
|
|
|
|
|
|
|
@ -183,10 +180,7 @@ internal class AndroidStorageProvider : IStorageProvider |
|
|
|
intent = intent.PutExtra(Intent.ExtraTitle, fileName); |
|
|
|
} |
|
|
|
|
|
|
|
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri) |
|
|
|
{ |
|
|
|
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri); |
|
|
|
} |
|
|
|
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation); |
|
|
|
|
|
|
|
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Save file"); |
|
|
|
|
|
|
|
@ -198,10 +192,8 @@ internal class AndroidStorageProvider : IStorageProvider |
|
|
|
{ |
|
|
|
var intent = new Intent(Intent.ActionOpenDocumentTree) |
|
|
|
.PutExtra(Intent.ExtraAllowMultiple, options.AllowMultiple); |
|
|
|
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri) |
|
|
|
{ |
|
|
|
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri); |
|
|
|
} |
|
|
|
|
|
|
|
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation); |
|
|
|
|
|
|
|
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Select folder"); |
|
|
|
|
|
|
|
@ -265,15 +257,15 @@ internal class AndroidStorageProvider : IStorageProvider |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static AndroidUri? TryGetInitialUri(IStorageFolder? folder) |
|
|
|
private static Intent TryAddExtraInitialUri(Intent intent, IStorageFolder? folder) |
|
|
|
{ |
|
|
|
if (OperatingSystem.IsAndroidVersionAtLeast(26) |
|
|
|
&& (folder as AndroidStorageItem)?.Uri is { } uri) |
|
|
|
{ |
|
|
|
return uri; |
|
|
|
return intent.PutExtra(DocumentsContract.ExtraInitialUri, uri); |
|
|
|
} |
|
|
|
|
|
|
|
return null; |
|
|
|
return intent; |
|
|
|
} |
|
|
|
|
|
|
|
private async Task EnsureUriReadPermission(AndroidUri androidUri) |
|
|
|
|