由于 Android 通过范围存储访问强制使用存储访问框架,因此应用程序无法使用直接 java.io.file 操作来移动文件。
目的是将某些从 mediastore 数据库中查询到的特定媒体项移动到另一个特定目录(源文件的同一分区),该目录用户已授予应用程序 rw 权限。
但是,当我尝试使用方法创建 DocumentFile 实例时
DocumentFile fromTreeUri(@NonNull Context context, @NonNull Uri treeUri)
在这种情况下,创建的实例的父 DocumentFile 为 null。以及方法
Uri moveDocument(@NonNull ContentResolver content, @NonNull Uri sourceDocumentUri, @NonNull Uri sourceParentDocumentUri, @NonNull Uri targetParentDocumentUri)
需要源父级移动文档文件。我知道我可以通过读/写 IO 流将源复制到目标,但这并不有效。那么,我怎样才能以推荐的方式做到这一点呢?
另一个问题是,如果有办法将内容从 mediastore 移动到另一个地方,如何在不删除底层文件实体的情况下将其从数据库中删除?