【发布时间】:2021-03-28 13:57:35
【问题描述】:
final String AUTHORITY = "com.android.externalstorage.documents";
Uri roottree = DocumentsContract.buildTreeDocumentUri(AUTHORITY,"primary:");
Uri sourceuri = DocumentsContract.buildDocumentUriUsingTree(roottree,DocumentsContract.geTreeDocumentId(roottree) + "Folder1");
Uri TargetUri = DocumentsContract.buildDocumentUriUsingTree(roottree,DocumentsContract.getTreeDocumentId(roottree) + "Folder2");
Uri resulturi = DocumentsContract.copyDocument(myContentResolver,sourceuri,TargetUri);
将 Folder1 复制到 Folder2 总是返回 null。 CreateDocument、DeleteDocument 甚至 MoveDocument 都可以正常工作。
【问题讨论】:
-
您不太可能有权使用由硬编码的权限和名称创建的
Uri值。 -
先生,您能再解释一下吗?
-
您必须具有读写文档和树的权限。您的应用只能使用存储访问框架(例如
ACTION_OPEN_DOCUMENT_TREE)获得该权限。而且,如果你使用这些,你会得到Uri值来使用,而不是像你在这里做的那样需要硬编码。 -
先生,我有权使用以下代码: Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, docUri);意图.addFlags(意图.FLAG_GRANT_READ_URI_PERMISSION);意图.addFlags(意图.FLAG_GRANT_WRITE_URI_PERMISSION); startActivityForResult(intent, 1);并且创建、删除和移动操作正在成功运行。
-
我对 DocumentsContract.copyDocument 也有类似的问题。每次我的程序崩溃时:“java.lang.UnsupportedOperationException:不支持复制”下面列出的古玩事物都可以正常工作! DocumentsContract.moveDocument DocumentsContract.deleteDocument DocumentsContract.renameDocument 为什么支持文档移动、删除和重命名,但不支持复制?任何人都可以在这个问题上帮助我吗?任何提示将不胜感激。