将文件路径转换为 ​​TreeUri(存储访问框架)

Ank*_*ria 3 android filewriter android-sdcard storage-access-framework

在我的图库应用程序中,我使用媒体内容提供程序图像来扩充回收器视图。长按图像时,我会为用户提供重命名该图像文件的选项。所以我在回收站视图中为每个图像都有完整的文件路径(例如:- /storage/sdcard1/DCIM/100ANDRO/ak.jpg )。然后我想重命名该文件。

现在的问题是,由于提供的文件路径是外部 SD 卡的路径,对于 Android 5 及更高版本,需要 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我们知道 TreeUri 时就是这种情况。在我的情况下,我知道文件路径,因此想将其转换为 TreeUri。

Ank*_*wal 5

要将文件路径转换为 ​​uri,请使用:-

DocumentFile fileuri = DocumentFile.fromFile(new File(filepath));
Run Code Online (Sandbox Code Playgroud)

然后你可以对这个文件 uri 执行删除、重命名操作。