我正在使用JAudioTagger库来读取和写入音频文件的标签。我能够读取标签但无法写入。java.io.IOException:无法更改文件
我检索音频文件的路径是这样的:
File songFile = new File(path); // path looks like /storage/3932-3434/Music/xyz.mp3
AudioFile audiofile = = AudioFileIO.read(songFile);
Tag tag = = audiofile.getTag();
tag.setField(FieldKey.TITLE, title);
// some more setField calls for different feilds
audiofile.commit();
的commit()方法是给予以下异常:
private String getSongPath(long songId) { String path = null; ContentResolver contentResolver = getContentResolver(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.Audio.Media.DATA}; String selection = MediaStore.Audio.Media._ID + " == ?"; String[] selectionArgs = {String.valueOf(songId)}; Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, null); if (cursor != null) { int pathCol = cursor.getColumnIndexOrThrow(projection[0]); cursor.moveToFirst(); path = cursor.getString(pathCol); cursor.close(); } return path; }
然后使用JAudioTagger写标签org.jaudiotagger.audio.exceptions.CannotWriteException: java.io.IOException:无法更改文件xyz.mp3在 org.jaudiotagger.audio.mp3.MP3File.commit(MP3File.java:799)在 com.techapps.musicplayerplus.MainActivity $ 17.onClick(MainActivity.java:2125) 在 android.support.v7 .app.AlertController $ ButtonHandler.handleMessage(AlertController.java:157) at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at android .app.ActivityThread.main(ActivityThread.java:5417)06-18 10:59:48.134 8802-8802/com.techapps.musicplayerplus W/System.err:
at java.lang.reflect.Method.invoke( Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com .android.internal.os.ZygoteInit.main(ZygoteInit.java:616)导致 作者:java.io.IOException:无法更改文件Saibo.mp3 org.jaudiotagger.audio.mp3.MP3File.precheck(MP3File的.java:824)留在 org.jaudiotagger org.jaudiotagger.audio.mp3.MP3File.save(MP3File.java:850)在 org.jaudiotagger.audio.mp3.MP3File.save(MP3File.java:783) .audio.mp3.MP3File.commit(MP3File.java:795)
我在Android 6上运行此代码,而我的应用程序是针对SDK 22的。我也在清单中提到了以下权限。
android.permission.WRITE_EXTERNAL_STORAGE
不过我不能写入SD卡。请帮帮我。提前致谢。
嗨!我有同样的问题(阅读下面的评论)!请告诉我,如果你已经解决了它! –