如何解决无法使用 Android SAF 从子目录创建和列出文件 - ACTION_OPEN_DOCUMENT_TREE
在我的应用程序中,我使用 android ACTION_OPEN_DOCUMENT_TREE
编写了用于选择具有持久权限的目录的代码。我一切顺利,但问题是我无法在子目录中创建文件,也无法从子目录中获取文件列表。它给了我像 Permission Denial: writing com.android.externalstorage.ExternalStorageProvider uri
但根据android official doc,它说Your app can then access any file in the selected directory and any of its sub-directories.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
activity.startActivityForResult(intent,PERMISSION_CODE);
在onActivityResult
if (requestCode == PERMISSION_CODE) {
if (resultData != null) {
Uri treeUri = resultData.getData();
final int takeFlags = resultData.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
context.getContentResolver().takePersistableUriPermission(treeUri,takeFlags);
if(DocumentFile.fromTreeUri(context,treeUri).findFile("backup") == null){
Uri backupDirUri = DocumentFile.fromTreeUri(context,treeUri)
.createDirectory("backup").getUri();
//this statement gives me error
DocumentFile.fromTreeUri(context,backupDirUri)
.createFile("text/plain","34234234.txt")
.getUri();
}
}
}
假设应用程序用户在 SDcard 中选择一个以 MyFolder
命名的目录,然后我在 backup
中创建了一个目录 MyFolder
,但我无法在 backup
中创建一个文件使用 backup
目录 URI 的目录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。