¿Cómo puedo actualizar la trayectoria del álbum usando ContentResolver?

Quiero actualizar / insertar una nueva imagen para un álbum en MediaStore pero no puedo conseguir que funcione.

Este es mi código:

public void updateAlbumImage(String path, int albumID) { ContentValues values = new ContentValues(); values.put(MediaStore.Audio.Albums.ALBUM_ART, path); int n = contentResolver.update(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, values, MediaStore.Audio.Albums.ALBUM_ID + "=" + albumID, null); Log.e(TAG, "updateAlbumImage(" + path + ", " + albumID + "): " + n); } 

El error es:

 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): java.lang.UnsupportedOperationException: Unknown or unsupported URL: content://media/external/audio/albums 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:131) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:111) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at android.content.ContentProviderProxy.update(ContentProviderNative.java:405) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at android.content.ContentResolver.update(ContentResolver.java:554) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at com.liviu.app.smpp.managers.AudioManager.updateAlbumImage(AudioManager.java:563) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at com.liviu.app.smpp.ShowAlbumsActivity.saveImageFile(ShowAlbumsActivity.java:375) 03-24 03:09:46.323: ERROR/AndroidRuntime(5319): at com.liviu.app.smpp.ShowAlbumsActivity.onClick(ShowAlbumsActivity.java:350) 

¡Gracias!

Ver este post:

Álbum de fotos de Android

El pedacito que usted necesita está aquí:

  ContentResolver res = context.getContentResolver(); Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id); if (uri != null) { InputStream in = null; try { in = res.openInputStream(uri); return BitmapFactory.decodeStream(in, null, sBitmapOptions); } catch (FileNotFoundException ex) { // The album art thumbnail does not actually exist. Maybe the user deleted it, or // maybe it never existed to begin with. Bitmap bm = getArtworkFromFile(context, null, album_id); if (bm != null) { // Put the newly found artwork in the database. // Note that this shouldn't be done for the "unknown" album, // but if this method is called correctly, that won't happen. // first write it somewhere String file = Environment.getExternalStorageDirectory() + "/albumthumbs/" + String.valueOf(System.currentTimeMillis()); if (ensureFileExists(file)) { try { OutputStream outstream = new FileOutputStream(file); if (bm.getConfig() == null) { bm = bm.copy(Bitmap.Config.RGB_565, false); if (bm == null) { return getDefaultArtwork(context); } } boolean success = bm.compress(Bitmap.CompressFormat.JPEG, 75, outstream); outstream.close(); if (success) { ContentValues values = new ContentValues(); values.put("album_id", album_id); values.put("_data", file); Uri newuri = res.insert(sArtworkUri, values); if (newuri == null) { // Failed to insert in to the database. The most likely // cause of this is that the item already existed in the // database, and the most likely cause of that is that // the album was scanned before, but the user deleted the // album art from the sd card. // We can ignore that case here, since the media provider // will regenerate the album art for those entries when // it detects this. success = false; } } if (!success) { File f = new File(file); f.delete(); } } catch (FileNotFoundException e) { Log.e(TAG, "error creating file", e); } catch (IOException e) { Log.e(TAG, "error creating file", e); } } } else { bm = getDefaultArtwork(context); } return bm; } finally { try { if (in != null) { in.close(); } } catch (IOException ex) { } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.