2014-05-10 64 views
1

我想將我的圖像設置爲音頻mp3文件的專輯封面。我知道專輯ID,當我更新時,應用程序拋出java.lang.UnsupportedOperationException。更新android mediastore中的專輯封面?

這裏是我的更新代碼..

ContentValues values_art=new ContentValues(); 

values_art.put(MediaStore.Audio.AlbumColumns.ALBUM_ART, img_path); 

int b=getContentResolver().update(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, values_art,MediaStore.Audio.Albums.ALBUM_ID + "=?", new String[]{album_id}); 

if(b !=0){ 
    Toast.makeText(getApplicationContext(), "Successfuly Image Updated", Toast.LENGTH_LONG).show(); 
} 
else{ 
    Toast.makeText(getApplicationContext(), "Not Image Updated", Toast.LENGTH_LONG).show(); 
} 

我的logcat:

05-11 00:14:33.063: E/AndroidRuntime(4046): FATAL EXCEPTION: main 
05-11 00:14:33.063: E/AndroidRuntime(4046): java.lang.UnsupportedOperationException: Unknown or unsupported URL: content://media/external/audio/albums 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:169) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.content.ContentProviderProxy.update(ContentProviderNative.java:507) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.content.ContentResolver.update(ContentResolver.java:1022) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at fsoft.farhad.mediaeditor.AudioTabActivity$4.onClick(AudioTabActivity.java:89) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.view.View.performClick(View.java:4212) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.view.View$PerformClick.run(View.java:17476) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.os.Handler.handleCallback(Handler.java:800) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.os.Handler.dispatchMessage(Handler.java:100) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.os.Looper.loop(Looper.java:194) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at android.app.ActivityThread.main(ActivityThread.java:5371) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at java.lang.reflect.Method.invoke(Method.java:525) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
05-11 00:14:33.063: E/AndroidRuntime(4046):  at dalvik.system.NativeStart.main(Native Method) 
+0

請發佈整個堆棧跟蹤 – CommonsWare

+0

我試圖找出自己。你在哪裏存儲藝術品的位圖數據? – Ael

回答

5

必須先刪除以前的作品(如果存在的話):

Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");  
int deleted = getContentResolver().delete(ContentUris.withAppendedId(sArtworkUri, album_id), null, null); 

然後再插入:

ContentValues values = new ContentValues(); 
values.put("album_id", album_id); 
values.put("_data", file_url); 
Uri num_updates = getContentResolver().insert(sArtworkUri, values); 
+0

事實上,一個人不能更新一行(並且必須刪除並重新插入)是非常奇怪的。 –

+0

@ user3302257考慮將答案標記爲正確 – leo7r