В моем приложении галереи изображений я использую изображение поставщика медиаконтента, чтобы раздуть просмотр ресайклера. При длительном нажатии на изображение я предоставляю пользователю возможность переименовать этот файл изображения. Таким образом, у меня есть полный путь к файлу (Ex: - /storage/sdcard1/DCIM/100ANDRO/ak.jpg) для каждого изображения в режиме просмотра вторсырья. Затем я хочу переименовать этот файл.Преобразование файла PATH в TreeUri (Storage Access Framework)
Теперь проблема заключается в том, что в качестве пути к файлу предусмотрена внешняя SD-карта, а для Android 5 & up, SAF (Storage Access Framework) требуется для записи файла.
Так обычно мы используем этот код для переименования файла с помощью SAF: -
public void onActivityResult(int requestCode, int resultCode, Intent resultData){
if (resultCode == RESULT_OK) {
Uri treeUri = resultData.getData();
getContentResolver().takePersistableUriPermission(treeUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
DocumentFile newFIle = pickedDir.createFile("text/plain","MyFile")
// or rename as
pickedDir.renameTo("fdtd.jpg");
} else {
Log.d("test","NOt OK RESULT");
}
}
Но это в том случае, когда мы знаем TreeUri. Здесь, в моем случае, я знаю путь fle и, следовательно, хочу преобразовать его в TreeUri.
Измените ваше приложение, чтобы пользователь мог выбрать файл через 'ACTION_OPEN_DOCUMENT' или' ACTION_OPEN_DOCUMENT_TREE'. Нет конверсии с пути к 'Uri' от поставщика хранилища. – CommonsWare
Нет, на самом деле это невозможно с типом приложения, которое я разрабатываю –