Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0123f84 authored by Michael W's avatar Michael W
Browse files

Eleven: Fix renaming playlists

* Currently it gives the following error:
  Movement of content://media/external/audio/playlists which isn't part of
  well-defined collection not allowed

* Looking at
  https://android.googlesource.com/platform/packages/providers/MediaProvider/+/refs/heads/master/src/com/android/providers/media/MediaProvider.java#5247
  shows, that an update can only happen for AUDIO_PLAYLISTS_ID
  -> Do exactly that

* Fixes parts of
  https://gitlab.com/LineageOS/issues/android/-/issues/3531
* Test
  - Before: Renaming crashes the app
  - After: Rename succeeds

Change-Id: Id3d6caab10c07da1d1612f9790e8c6ac8ecda6f5
parent 15d255b8
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@ package org.lineageos.eleven.menu;
import android.app.Activity;
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.os.Bundle;
import android.net.Uri;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio;
import android.text.Editable;
@@ -83,13 +85,16 @@ public class RenamePlaylist extends BasePlaylistDialog {
            return;
        }
        final ContentResolver resolver = activity.getContentResolver();
        final Uri uri = ContentUris.withAppendedId(
                            MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
                            mRenameId);
        final ContentValues values = new ContentValues(1);
        values.put(Audio.Playlists.NAME, playlistName);
        resolver.update(Audio.Playlists.EXTERNAL_CONTENT_URI, values,
                MediaStore.Audio.Playlists._ID + "=?", new String[]{
                        String.valueOf(mRenameId)
                });
        dismissDialog();
        resolver.update(uri, values, null, null);
        final Dialog dialog = getDialog();
        if (dialog != null) {
            dialog.dismiss();
        }
    }

    @Override