我一直在努力学习如何在Lollipop上重命名DocumentFile。
非常抱歉,我已经尝试到处搜索解决方案,但似乎网络上关于这个新的SD卡访问API的信息比较缺乏。
这是我的代码:
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);
出现了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)
我也尝试过这个方法:
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);
它似乎没有做任何事情:没有错误,什么也没发生……
......
......我可以使用以下方法很好地删除DocumentFile:
Uri uri = ListViewObject_List.get(LastItemPos).getImageUri();
final DocumentFile documentFile = DocumentFile.fromSingleUri(MainClass.this, uri);
documentFile.delete();
请有人看一下它,看看我做错了什么?
非常感谢您的善意和帮助。
更新:此 URI 是
content://com.android.externalstorage.documents/tree/0000-0000%3APictures%2FTest1/document/0000-0000%3APictures%2FTest1%2FMyPicture.jpg
DocumentProvider
类,这是错误的(那是一个文档提供者的实现)。DocumentContract
有一个renameDocument()
方法,你可以尝试一下--请看我的更正答案。 - CommonsWare