Android 如何将DocumentsProvider.moveDocument与TreeUri一起使用?

Android 如何将DocumentsProvider.moveDocument与TreeUri一起使用?,android,kotlin,uri,documentfile,Android,Kotlin,Uri,Documentfile,我想将文档文件从一个位置移动到另一个位置。URI通过ACTION_OPEN_DOCUMENTTREE获取并存储 但是,当我尝试时: val resolver = context.contentResolver val srcUri = Uri.parse(myUriFromACTION_OPEN_DOCUMENT_TREE) val srcDocument = DocumentFile.fromTreeUri(context, srcUri) val targetUri = anotherUri

我想将文档文件从一个位置移动到另一个位置。URI通过ACTION_OPEN_DOCUMENTTREE获取并存储

但是,当我尝试时:

val resolver = context.contentResolver
val srcUri = Uri.parse(myUriFromACTION_OPEN_DOCUMENT_TREE)
val srcDocument = DocumentFile.fromTreeUri(context, srcUri)
val targetUri = anotherUriFromACTION_OPEN_DOCUMENT_TREE

DocumentsContract.moveDocument(resolver, srcUri, srcDocument.uri, targetUri )
我得到一个错误:

  java.lang.IllegalArgumentException: Invalid URI: content://com.android.externalstorage.documents/tree/primary%3Anew%20test%20folder%2FTdf%2FmayBeDeleted%2Fexterner

我还没有找到一种方法将TreeUri转换为正常的。这就是问题所在吗?如果是,是如何做到的

顺便说一句,错误消息中的Uri是我的srcUri;但是我猜目标Uri也不会被接受。你的目标Uri是一个现有的文件夹。比如你的源uri。我认为目标文件夹应该不存在。moveDocument将三个URI作为参数。您没有解释它们应该是什么以及如何使用这些参数。好的,所有三个URI的构造都类似:content://com.android.externalstorage.documents/tree/primary:%3Anew%20test%20folder%2 指向我的源文件夹, content://com.android.externalstorage.documents/tree/primary:%3Anew%20test%20folder%20myFile.acc 我在此位置的文件,以及content://com.android.externalstorage.documents/tree/primary:%3Aother%20folder 我的目标;我可以用这些参数移动我的文件吗?请删除该注释,因为它不可读。请把所有信息放在你的帖子里。