是否有一种方法可以使用StorageActionFramework ACTION_OPEN_DOCUMENT意图请求特定文件的信息?更具体地说,我有一个特定文件的URI,它是我从MediaStore获得的。我想知道它是否有写访问权限,如果有,删除它。此外,我希望在没有任何UI的情况下完成此操作(在此特定上下文中不需要任何UI)。
文档说明了如何使用intent.addCategory (Intent.CATEGORY_OPENABLE)
对一类文件执行此操作。并将其限制为特定类型的文件,例如intent.setType ("image/*")
。但我没有看到任何东西将其限制为特定文件。
而且,我意识到一旦您从StorageActionFramework接收到一组文件,您就可以查看单个文件的属性。
看来,如果我可以使用ACTION_OPEN_DOCUMENT来获得SAF的URI,我可以使用DocumentsContract.deleteDocument()
来删除它。
在我的情况下,用户从我的应用程序中调用相机应用程序并拍摄了一张或多张照片。然后,我的代码查询MediaStore以确定新图像的文件名。然后我希望将文件移动到特定于我的应用程序的目录。这适用于位于"内部"one_answers"外部"存储的文件,但不适用于可移动存储。
从长远来看,这个解决方案是不够的,因为很明显,它将使用太多的永久存储(尽管存储大小的快速增长速度减轻了这一点)。然而,我的应用程序确实需要控制通过应用程序拍摄的图像文件,因此,将它们留在可移动存储上可能会破坏应用程序。
另一个复杂的因素是缺乏拍摄多张照片并将其保存到指定位置的Android API。有这样一个API拍摄一张照片,但这不会为我的应用程序工作。因此,我不得不让相机应用程序将文件保存到它想要的地方,然后再移动它们。
其他一些应用程序只是复制照片并将副本存储在私人目录中。我可以这样做,但这会使存储问题更加恶化。长期的解决方案可能是将云存储与本地私有缓存结合使用。
是否有一种方法可以使用StorageActionFramework ACTION_OPEN_DOCUMENT意图请求特定文件的信息?
。对于初学者来说,存储访问框架与文件几乎没有关系。
最适合整体结构的是,如果您可以提供一个开始的Uri
,以允许用户选择并打开该文档附近的文档。这将是一个很好的功能,但不支持。
文档说明了如何使用intent对一类文件执行此操作。例如,addCategory (Intent.CATEGORY_OPENABLE)
。CATEGORY_OPENABLE
意味着您返回的Uri
应该与openInputStream()
、openOutputStream()
和相关方法一起工作,并且Uri
上的query()
应该能够返回OpenableColumns
。它与文件没有什么关系。
这将内容限制为特定的MIME类型(或通配符)。它与文件没有什么关系。并将其限制为特定类型的文件,intent。setType("图像/*")
我想知道它是否有写权限,如果有,删除它
您可以通过openOutputStream()
写入访问权限来更改内容。我不知道您是否有删除底层内容的方法。
此外,我想在没有任何UI
的情况下完成此操作
使用ACTION_OPEN_DOCUMENT
的唯一原因是显示一个UI,允许用户选择一段内容。
然后,我的代码查询MediaStore以确定新图像的文件名
由于没有要求相机应用程序来更新MediaStore
,这似乎不是特别可靠。
另一个复杂的因素是缺乏拍摄多张照片并将其保存到指定位置的Android API。有这样一个API拍摄一张照片,但这将不工作为我的应用程序
由于没有要求相机应用程序允许用户连续拍摄多张照片,这似乎不是特别可靠。