android - 使用 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
?
解决方案
val canRead = context.checkCallingUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION) == PackageManager.PERMISSION_GRANTED
推荐阅读
- backstop.js - BackstopJs。我可以使用 png 或 svg 作为参考 URL 吗?
- python - 需要准确地将文本文件分类为子类别
- reactjs - 反应路由器。History.replace 不改变 location.key
- excel - excel中的自定义函数适用于excel桌面,但不适用于excel web
- javascript - 如何将文本文件连接/添加到我的 JS 脚本
- magento - Magento 从 mixin 访问 jsLayout 配置数据
- bash - 如何用空格替换变量的逗号分隔字符串?
- jhipster - 从微服务 jhipster 在 apigateway 中创建 UI
- php - 我需要帮助定义 Laravel Eloquent 关系
- c - 使用递归打印字符串的反转