在某些设备上 ACTION_OPEN_DOCUMENT_TREE 不显示选择器

问题描述 投票:0回答:1

我使用

ACTION_OPEN_DOCUMENT_TREE
允许用户选择路径并获得 SAF 权限,但在某些用户设备上意图
ACTION_OPEN_DOCUMENT_TREE
会导致类似

的消息

没有可用的应用程序来完成此操作

以及类似的消息或打开空的活动选择器。

受影响用户操作系统的API级别在API级别23和25之间(目前)。

我以为这是Lollipop以上Android版本默认支持的操作,但看来我错了。

除了使用基于 SAF 和基于经典直接文件系统访问的双文件管理来使应用程序膨胀之外,还有其他选择吗?

android android-intent storage-access-framework
1个回答
0
投票

我希望这只发生在旧版本的 Android 上,它仍然可以在

WRITE_EXTERNAL_STORAGE
权限下工作。

在这种情况下,我们仍然可以使用

SAF
及其
DocumentFile

Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).canBeHandled(packageManager)

fun Intent.canBeHandled(packageManager: PackageManager): Boolean {
    return resolveActivity(packageManager) != null
}

如果不支持

ACTION_OPEN_DOCUMENT_TREE
,那么您可以要求用户授予
WRITE_EXTERNAL_STORAGE
权限,选择要使用的某个文件夹(
File
),然后使用
DocumentFile
将其转换为
DocumentFile.fromFile(File)
,然后返回
DocumentFile
将具有写入权限就像
File
但仅适用于仍然支持
WRITE_EXTERNAL_STORAGE

的设备
© www.soinside.com 2019 - 2024. All rights reserved.