在我的应用程序中,我想在选择的目录中创建子目录。我使用SAF(存储访问框架):选择目录并创建一个子目录工作正常。
选择目录:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_PATH_TO_DATA);
创建子目录:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) {
return;
}
if (requestCode == REQUEST_CODE_PATH_TO_DATA) {
if (data == null) {
return;
}
DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), data.getData());
getActivity().grantUriPermission(getActivity().getPackageName(), data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getActivity().getContentResolver().takePersistableUriPermission(data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
pickedDir.createDirectory("Portfolio");
String pathToPickedDir = "";
for (DocumentFile file : pickedDir.listFiles()) {
if (file.isDirectory() && file.getName().endsWith("Portfolio")) {
pathToPickedDir = file.getUri().toString();
}
}
}
}
来自pickedDir的URI是:
content://com.android.externalstorage.documents/tree/314E-7741%3ADCIM
创建的子目录“Portfolio”中的URI是:
content://com.android.externalstorage.documents/tree/314E-7741%3ADCIM/document/314E-7741%3ADCIM%2FPortfolio
然后当我试图在“Portfolio”中创建子目录时,我不能这样做,因为目录是在最初选择的文件夹中创建的,而不是在“Portfolio”文件夹中。
DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), pathToPickedDir);
pickedDir.createDirectory("Patient");
我做错了什么?谢谢你的帮助。
答案 0 :(得分:1)
我发现的唯一方法是使用"用于"周期:
bootstrap.js