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

时间:2018-05-24 17:38:11

标签: java android

使用[<expr> while <pred>]中的FileChooser我希望能够在用户选择的位置编写文件。由于文件选择器返回树URI,我使用实用程序类,特别是方法Intent.ACTION_OPEN_DOCUMENT_TREE,取自this question以将该URI转换为可用的android目录URI。

例如: FileUtil.getFullPathFromTreeUri

转换为: 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

1 个答案:

答案 0 :(得分:0)

错误的做法。

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

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

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

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

只是做一些谷歌搜索。