@@ -296,10 +296,22 @@ internal class DocumentFileApi(private val plugin: SharedStoragePlugin) :
296296 @RequiresApi(API_21 )
297297 private fun openDocument (call : MethodCall , result : MethodChannel .Result ) {
298298 val initialUri = call.argument<String >(" initialUri" )
299+ val grantWritePermission = call.argument<Boolean >(" grantWritePermission" )!!
300+ val persistablePermission =
301+ call.argument<Boolean >(" persistablePermission" )!!
299302
300303 val intent =
301304 Intent (Intent .ACTION_OPEN_DOCUMENT ).apply {
302305 addCategory(Intent .CATEGORY_OPENABLE )
306+ if (persistablePermission) {
307+ addFlags(
308+ Intent .FLAG_GRANT_PERSISTABLE_URI_PERMISSION
309+ )
310+ }
311+ addFlags(
312+ if (grantWritePermission) Intent .FLAG_GRANT_WRITE_URI_PERMISSION
313+ else Intent .FLAG_GRANT_READ_URI_PERMISSION
314+ )
303315
304316 if (initialUri != null ) {
305317 val tree =
@@ -325,12 +337,18 @@ internal class DocumentFileApi(private val plugin: SharedStoragePlugin) :
325337
326338 @RequiresApi(API_21 )
327339 private fun openDocumentTree (call : MethodCall , result : MethodChannel .Result ) {
328- val grantWritePermission = call.argument<Boolean >(" grantWritePermission" )!!
329-
330340 val initialUri = call.argument<String >(" initialUri" )
341+ val grantWritePermission = call.argument<Boolean >(" grantWritePermission" )!!
342+ val persistablePermission =
343+ call.argument<Boolean >(" persistablePermission" )!!
331344
332345 val intent =
333346 Intent (Intent .ACTION_OPEN_DOCUMENT_TREE ).apply {
347+ if (persistablePermission) {
348+ addFlags(
349+ Intent .FLAG_GRANT_PERSISTABLE_URI_PERMISSION
350+ )
351+ }
334352 addFlags(
335353 if (grantWritePermission) Intent .FLAG_GRANT_WRITE_URI_PERMISSION
336354 else Intent .FLAG_GRANT_READ_URI_PERMISSION
0 commit comments