@@ -65,26 +65,33 @@ class MetadataGetter(private val uriMap: MutableMap<String, Uri>) {
6565 }
6666 }
6767
68- queryContentResolverMetadata(contentResolver, metadataBuilder, context)
68+ val couldBeVirtualFile = pickOptions.allowVirtualFiles && DocumentsContract .isDocumentUri(context, sourceUri)
69+ queryContentResolverMetadata(contentResolver, metadataBuilder, couldBeVirtualFile)
6970
7071 metadataBuilder
7172 }
7273
7374 fun queryContentResolverMetadata (
7475 contentResolver : ContentResolver ,
7576 metadataBuilder : DocumentMetadataBuilder ,
76- context : Context
77+ couldBeVirtualFile : Boolean
7778 ) {
7879 val forUri = metadataBuilder.getUri()
80+
81+ val projection = mutableListOf (
82+ DocumentsContract .Document .COLUMN_MIME_TYPE ,
83+ OpenableColumns .DISPLAY_NAME ,
84+ OpenableColumns .SIZE ,
85+ ).apply {
86+ if (couldBeVirtualFile) {
87+ add(DocumentsContract .Document .COLUMN_FLAGS )
88+ }
89+ }.toTypedArray()
90+
7991 contentResolver
8092 .query(
8193 forUri,
82- arrayOf(
83- DocumentsContract .Document .COLUMN_MIME_TYPE ,
84- OpenableColumns .DISPLAY_NAME ,
85- OpenableColumns .SIZE ,
86- DocumentsContract .Document .COLUMN_FLAGS ,
87- ),
94+ projection,
8895 null ,
8996 null ,
9097 null
@@ -106,7 +113,7 @@ class MetadataGetter(private val uriMap: MutableMap<String, Uri>) {
106113 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .N ) {
107114 // https://developer.android.com/training/data-storage/shared/documents-files#open-virtual-file
108115 val isVirtual =
109- if (DocumentsContract .isDocumentUri(context, forUri) ) {
116+ if (couldBeVirtualFile ) {
110117 val cursorValue: Int =
111118 getCursorValue(
112119 cursor, DocumentsContract .Document .COLUMN_FLAGS , Int ::class .java
0 commit comments