使用[<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
)
答案 0 :(得分:0)
错误的做法。
摒弃那个愚蠢的函数getFullPathFromTreeUri()。
只需为获取的树uri创建一个DocumentFile
实例。
之后在实例上使用createFile()。
之前已经发布了精确的例子。
只是做一些谷歌搜索。