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

问题描述 投票:0回答:1

使用

Intent.ACTION_OPEN_DOCUMENT_TREE
中的 FileChooser 我希望能够在用户选择的位置写入文件。由于文件选择器返回一个 Tree URI,我使用一个实用程序类,特别是方法
FileUtil.getFullPathFromTreeUri
(取自 this Question)将该 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

java android
1个回答
2
投票

错误的做法。

废除那个愚蠢的函数 getFullPathFromTreeUri()。

只需为获得的树uri创建一个

DocumentFile
实例即可。

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

© www.soinside.com 2019 - 2024. All rights reserved.