我正在使用 JAudioTagger 库来读取和写入音频文件的标签。我能够阅读标签但无法编写它们。
我正在检索这样的音频文件路径:
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 编写标签:
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() 方法给出以下异常:
org.jaudiotagger.audio.exceptions.CannotWriteException: java.io.IOException: 无法在 com.techapps.musicplayerplus 的 org.jaudiotagger.audio.mp3.MP3File.commit(MP3File.java:799) 中更改文件 xyz.mp3。 MainActivity$17.onClick(MainActivity.java:2125) 在 android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android。 os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 06-18 10:59:48.134 8802-8802/com.techapps.musicplayerplus W/System.err:
在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit. java:616) 原因:java.io.IOException: 无法在 org.jaudiotagger.audio.mp3.MP3File.precheck(MP3File.java:824) 的 org.jaudiotagger.audio.mp3.MP3File 中更改文件 Saibo.mp3 .save(MP3File.java:850) at org.jaudiotagger.audio.mp3.MP3File.save(MP3File.java:783) at org.jaudiotagger.audio.mp3.MP3File.commit(MP3File.java:795)
我在 Android 6 上运行此代码,而我的应用程序针对 SDK 22。我还在清单中提到了以下权限。
android.permission.WRITE_EXTERNAL_STORAGE
我仍然无法写入 SD 卡。请帮我。提前致谢。