私はオーディオファイルのタグを読み書きするためにJAudioTaggerライブラリを使用しています。私はタグを読むことができますが、タグを書くことはできません。 JAudioTaggerを使用して、タグを記述するためにその後java.io.IOException:ファイルに変更を加えることができません
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;
}
:私はこのようなオーディオファイルのパスを取得しています
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:ファイルを変更できません android.support.v7で com.techapps.musicplayerplus.MainActivity $ 17.onClick(MainActivity.java:2125) で org.jaudiotagger.audio.mp3.MP3File.commit(MP3File.java:799)でxyz.mp3 .app.AlertController $ ButtonHandler.handleMessage(AlertController.java:157) android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at アンドロイド.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ネイティブメソッド) 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)at org.jaudiotagger.audio.mp3.MP3File.save(MP3File.java:850)at org.jaudiotagger.audio.mp3.MP3File.save(MP3File.java:783)at org.jaudiotagger .audio.mp3.MP3File.commit(MP3File.java:795)
私のアプリは、私もマニフェストで許可次言及しているSDK 22を対象としていながら、私はAndroidの6にこのコードを実行しています。
android.permission.WRITE_EXTERNAL_STORAGE
それでも私は、SDカードへの書き込みをすることができません。私を助けてください。前もって感謝します。
こんにちは!私は同じ問題を抱えています(下記のコメントを読んでください)!あなたがそれを解決したら教えてください! –