我想让用户选择将图像保存在他们的 sd 卡上,并且我希望能够计算这些图像的文件夹大小。我发现Environment.getExternalStorageDirectory()
返回内部存储。我可以找到 SD 卡的唯一方法是使用ACTION_OPEN_DOCUMENT_TREE
请求。但这意味着我必须使用 DocumentFiles 而不是常规文件。我只能获得内容 uri,而不是 sd 卡本身的直接路径。
因此,File.length()
内部存储运行良好,但DocumentFile.length()
外部存储运行速度极慢。有没有办法根据其内容 uri 获取文件夹的大小而不会永远占用它?或者我可以以某种方式找到 sd 卡的实际路径并改用 Files 吗?我找到了一个类似的文件夹,/storage/3857-3732
但我似乎没有写入权限(是的,我有WRITE_EXTERNAL_STORAGE
权限)。