使用Intent.ACTION_OPEN_DOCUMENT_TREE将文件写入目录

4
使用Intent.ACTION_OPEN_DOCUMENT_TREE提供的FileChooser,我希望能够在用户选择的位置写入文件。由于文件选择器返回Tree URI,我使用一个实用类,具体来说是从这个问题中获取的FileUtil.getFullPathFromTreeUri方法,将URI转换为可用的Android目录URI。
例如: content://com.android.externalstorage.documents/tree/0A17-1D03%3ATest 转换为: /storage/0A17-1D03/Test 这是我目前的代码:
@Override
public void onClick(View v) {
    Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    i.addCategory(Intent.CATEGORY_DEFAULT);
    startActivityForResult(Intent.createChooser(i, "Choose a directory"), FILE_CHOOSER_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case FILE_CHOOSER_REQUEST_CODE:
            if (data != null) {
                Log.i("URI", FileUtil.getFullPathFromTreeUri(data.getData(), getActivity()));
                dismiss();
            }
            break;
    }
}

我该如何在FileUtil.getFullPathFromTreeUri返回的位置写入文件?(例如:/storage/0A17-1D03/Test
1个回答

2

错误的方法。

放弃那个愚蠢的函数getFullPathFromTreeUri()。

只需为获取的树形uri创建一个DocumentFile实例即可。

之后在该实例上使用createFile()。

之前已经发布了精确的示例。

只需要做一点搜索。


1
“只需要做一点点谷歌搜索” - 你认为我是怎么到这里来的? - AplusKminus
我已经谷歌了4个小时,仍然没有找到在文档树下创建文件夹的方法。 - SparkyNZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接