首页 > 解决方案 > 使用 ContentResolver 查询 DocumentsContract Uri 时,如何检查是否可以读取文档?

问题描述

我正在使用DocumentsContract查询来尝试加快读取文件夹的速度。我得到了大部分数据,但我正在努力处理告诉我是否可以阅读文档的标志。

这是查询:

contentResolver.query(uri, arrayOf(
                DocumentsContract.Document.COLUMN_DOCUMENT_ID, DocumentsContract.Document.COLUMN_DISPLAY_NAME, DocumentsContract.Document.COLUMN_MIME_TYPE, DocumentsContract.Document.COLUMN_LAST_MODIFIED, DocumentsContract.Document.COLUMN_SIZE, DocumentsContract.Document.COLUMN_FLAGS), null, null, null)

DocumentsContract.Document.COLUMN_FLAGS在其文档中有:

     /**
     * Flags that apply to a document. This column is required.
     * <p>
     * Type: INTEGER (int)
     *
     * @see #FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE
     * @see #FLAG_DIR_PREFERS_GRID
     * @see #FLAG_DIR_PREFERS_LAST_MODIFIED
     * @see #FLAG_DIR_SUPPORTS_CREATE
     * @see #FLAG_PARTIAL
     * @see #FLAG_SUPPORTS_COPY
     * @see #FLAG_SUPPORTS_DELETE
     * @see #FLAG_SUPPORTS_METADATA
     * @see #FLAG_SUPPORTS_MOVE
     * @see #FLAG_SUPPORTS_REMOVE
     * @see #FLAG_SUPPORTS_RENAME
     * @see #FLAG_SUPPORTS_SETTINGS
     * @see #FLAG_SUPPORTS_THUMBNAIL
     * @see #FLAG_SUPPORTS_WRITE
     * @see #FLAG_VIRTUAL_DOCUMENT
     * @see #FLAG_WEB_LINKABLE
     */

我可以看到WRITE那里,但是呢READ

标签: android

解决方案


val canRead = context.checkCallingUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION) == PackageManager.PERMISSION_GRANTED


推荐阅读