StorageActionFramework ACTION_OPEN_DOCUMENT可以请求单个文件吗?



是否有一种方法可以使用StorageActionFramework ACTION_OPEN_DOCUMENT意图请求特定文件的信息?更具体地说,我有一个特定文件的URI,它是我从MediaStore获得的。我想知道它是否有写访问权限,如果有,删除它。此外,我希望在没有任何UI的情况下完成此操作(在此特定上下文中不需要任何UI)。

文档说明了如何使用intent.addCategory (Intent.CATEGORY_OPENABLE)对一类文件执行此操作。并将其限制为特定类型的文件,例如intent.setType ("image/*")。但我没有看到任何东西将其限制为特定文件。

而且,我意识到一旦您从StorageActionFramework接收到一组文件,您就可以查看单个文件的属性。

看来,如果我可以使用ACTION_OPEN_DOCUMENT来获得SAF的URI,我可以使用DocumentsContract.deleteDocument()来删除它。

<<p> 更多上下文/em>

在我的情况下,用户从我的应用程序中调用相机应用程序并拍摄了一张或多张照片。然后,我的代码查询MediaStore以确定新图像的文件名。然后我希望将文件移动到特定于我的应用程序的目录。这适用于位于"内部"one_answers"外部"存储的文件,但不适用于可移动存储。

从长远来看,这个解决方案是不够的,因为很明显,它将使用太多的永久存储(尽管存储大小的快速增长速度减轻了这一点)。然而,我的应用程序确实需要控制通过应用程序拍摄的图像文件,因此,将它们留在可移动存储上可能会破坏应用程序。

另一个复杂的因素是缺乏拍摄多张照片并将其保存到指定位置的Android API。有这样一个API拍摄一张照片,但这不会为我的应用程序工作。因此,我不得不让相机应用程序将文件保存到它想要的地方,然后再移动它们。

其他一些应用程序只是复制照片并将副本存储在私人目录中。我可以这样做,但这会使存储问题更加恶化。长期的解决方案可能是将云存储与本地私有缓存结合使用。

是否有一种方法可以使用StorageActionFramework ACTION_OPEN_DOCUMENT意图请求特定文件的信息?

。对于初学者来说,存储访问框架与文件几乎没有关系。

最适合整体结构的是,如果您可以提供一个开始的Uri,以允许用户选择并打开该文档附近的文档。这将是一个很好的功能,但不支持。

文档说明了如何使用intent对一类文件执行此操作。例如,addCategory (Intent.CATEGORY_OPENABLE)

CATEGORY_OPENABLE意味着您返回的Uri应该与openInputStream()openOutputStream()和相关方法一起工作,并且Uri上的query()应该能够返回OpenableColumns。它与文件没有什么关系。

并将其限制为特定类型的文件,intent。setType("图像/*")

这将内容限制为特定的MIME类型(或通配符)。它与文件没有什么关系。

我想知道它是否有写权限,如果有,删除它

您可以通过openOutputStream()写入访问权限来更改内容。我不知道您是否有删除底层内容的方法。

此外,我想在没有任何UI

的情况下完成此操作

使用ACTION_OPEN_DOCUMENT的唯一原因是显示一个UI,允许用户选择一段内容。


然后,我的代码查询MediaStore以确定新图像的文件名

由于没有要求相机应用程序来更新MediaStore,这似乎不是特别可靠。

另一个复杂的因素是缺乏拍摄多张照片并将其保存到指定位置的Android API。有这样一个API拍摄一张照片,但这将不工作为我的应用程序

由于没有要求相机应用程序允许用户连续拍摄多张照片,这似乎不是特别可靠。

最新更新