在我的图像库应用程序中,我使用媒体内容提供程序图像来充实回收站视图。长按一个图像,我让用户选择重命名该图像文件。因此,我在回收视图中为每个图像都有完整的文件路径(例如: - /storage/sdcard1/DCIM/100ANDRO/ak.jpg)。然后我想重命名该文件。将文件路径转换为TreeUri(存储访问框架)
现在的问题是,由于提供的文件路径是外部SD卡的文件路径,所以需要SAF(存储访问框架)来编写文件。
所以一般我们使用此代码为重命名使用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
不,实际上这对于我正在开发的应用程序的类型来说是不可能的 –