我使用
ACTION_OPEN_DOCUMENT_TREE
允许用户选择路径并获得 SAF 权限,但在某些用户设备上意图 ACTION_OPEN_DOCUMENT_TREE
会导致类似 的消息
没有可用的应用程序来完成此操作
以及类似的消息或打开空的活动选择器。
受影响用户操作系统的API级别在API级别23和25之间(目前)。
我以为这是Lollipop以上Android版本默认支持的操作,但看来我错了。
除了使用基于 SAF 和基于经典直接文件系统访问的双文件管理来使应用程序膨胀之外,还有其他选择吗?
我希望这只发生在旧版本的 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
的设备