我想编写自己的 lite 文件浏览器。
File API 现在不适用于外部存储。
该版本还改进了作用域存储,这使开发人员可以更轻松地迁移到使用此存储模型。
我不明白如何使用作用域存储来访问 /sdcard。
如果您正在寻找文件选择器体验,那么Storage Access Framework是您现在唯一的选择。下面的代码让你拿起多个文件。如果您想要目录级别选择,您可以使用ACTION_OPEN_DOCUMENT_TREE意图。
private fun openStorageAccess() {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
type = "*/*"
addCategory(Intent.CATEGORY_OPENABLE)
putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
}
startActivityForResult(intent, openDirectoryAccessCode)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == openDirectoryAccessCode && resultCode == Activity.RESULT_OK) {
val fileUris = data?.clipData ?: data?.data
}
}
Run Code Online (Sandbox Code Playgroud)
此外,你可以要求一个特殊的所有文件访问,以MediaStore.Files从谷歌游戏控制台。有关Android 11 存储更改的更多信息。
编辑:
如果您想在 Android 29+ 中实现类似文件浏览器的体验,这里有一个建议的想法,我个人尚未尝试过但应该可行。这不会是最佳体验,但会非常类似于文件浏览器。
requestLegacyExternalStorage="true"如果 API == 29)。MANAGE_EXTERNAL_STORAGE标志放入清单ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION有意打开设置提示用户允许所有文件访问。MediaStore.Files连同RELATIVE_PATHDCIM/Vacation/IMG_1234.jpg.| 归档时间: |
|
| 查看次数: |
7547 次 |
| 最近记录: |