J'ai eu du mal à renommer un DocumentFile sur Lollipop. Je suis désolé d'avoir essayé de chercher partout la solution, mais il semble y avoir un manque d'information en ligne sur cette nouvelle API d'accès à la carte SD.Android 5.0+ Nouvelle API d'accès à la carte SD DocumentFile.renameTo() UnsupportedOperationException
Voici ce que j'ai:
String EditText = (Alert_EditText.getText().toString()).trim();
Uri uri = ListViewObject_List.get(LastItemPos).getImageUri();
final DocumentFile documentFile = DocumentFile.fromSingleUri(MainClass.this, uri);
documentFile.renameTo(EditText);
Il est venu avec un UnsupportedOperationException:
FATAL EXCEPTION: main
Process: com.camera.test, PID: 3362
java.lang.UnsupportedOperationException
at android.support.v4.provider.SingleDocumentFile.renameTo(SingleDocumentFile.java:105)
at com.camera.test.MainClass$21.onClick(MainClass.java:986)
at android.view.View.performClick(View.java:5242)
at android.widget.TextView.performClick(TextView.java:10530)
at android.view.View$PerformClick.run(View.java:21185)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6872)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
J'ai aussi essayé:
String EditText = (Alert_EditText.getText().toString()).trim();
Uri uri = ListViewObject_List.get(LastItemPos).getImageUri();
File file = new File(uri.getPath());
final DocumentFile documentFile = DocumentFile.fromFile(file);
documentFile.renameTo(EditText);
Il ne semble pas faire quelque chose: pas d'erreur, rien ne s'est passé ...
....
.... je peux supprimer le DocumentFile très bien ce qui suit:
Uri uri = ListViewObject_List.get(LastItemPos).getImageUri();
final DocumentFile documentFile = DocumentFile.fromSingleUri(MainClass.this, uri);
documentFile.delete();
Quelqu'un peut-il s'il vous plaît jeter un coup d'oeil et voir ce que je fait de mal?
Merci beaucoup pour votre gentillesse et votre aide.
Mise à jour: cette uri est
content://com.android.externalstorage.documents/tree/0000-0000%3APictures%2FTest1/document/0000-0000%3APictures%2FTest1%2FMyPicture.jpg
Merci beaucoup pour votre aide. Donc, fondamentalement, je dois parcourir le répertoire parent pour rechercher le fichier que j'essaye de supprimer. Ehh, ça ne prendrait pas un moment quand j'ai plus de 200 000 images? Je n'ai aucune idée sur le DocumentsProvider.Contract. pouvez-vous l'expliquer un peu plus? Cela craint que je ne puisse pas utiliser documentFile.renameTo() :-( – Dante
@Dante: Mon erreur, je regardais la classe 'DocumentProvider', ce qui est faux (c'est l'implémentation d'un fournisseur de document).' DocumentContract' a une méthode 'renameDocument()' que vous pouvez essayer - voir ma réponse corrigée – CommonsWare
Génial, vous êtes juste un génie J'ai passé des jours à essayer de comprendre et de chercher en ligne Je ne peux pas vous remercier assez mon ami. – Dante