Dans mon application de galerie d'images, j'utilise l'image du fournisseur de contenu multimédia pour gonfler la vue du recycleur. En appuyant longuement sur une image, je donne à l'utilisateur la possibilité de renommer ce fichier image. J'ai donc le chemin complet du fichier (Ex:- /storage/sdcard1/DCIM/100ANDRO/ak.jpg ) pour chaque image dans la vue du recycleur. Je veux ensuite renommer ce fichier.
Le problème est que le chemin de fichier fourni est celui de la carte SD externe, et pour Android 5 et plus, SAF (Storage Access Framework) est nécessaire pour écrire un fichier.
Nous utilisons donc généralement ce code pour renommer un fichier à l'aide de 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");
}
}
Mais c'est le cas lorsque nous connaissons le TreeUri. Dans mon cas, je connais fle path et je veux donc le convertir en TreeUri.