Запрос базы данных Google Play Музыки на Android

Я пытаюсь запросить плейлисты, созданные приложением "Google Play Музыка", но так и не смог. Я создал плейлист, используя локально сохраненный контент. Я использовал следующий код для запроса:

Cursor c = managedQuery(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
                                       new String[] {MediaStore.Audio.Playlists._ID,
                                                     MediaStore.Audio.Playlists.NAME
                                                    }, null, null, null);

Это отлично подходит для Winamp, но не для Google Play Музыки. Фактически, Winamp не отображает плейлисты, созданные в Google Play Музыке. Однако в Google Play Музыка отображаются плейлисты, созданные с помощью Winamp. Я предполагаю, что Google Play Music использует свою собственную базу данных для хранения плейлистов, где другие игроки используют Content Provider с uri MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI для хранения своих плейлистов. Есть ли способ получить плейлисты, созданные в Google Play Музыке?

Ответ 1

Я знаю, что эта ветка устарела, но я тоже занимаюсь этой проблемой.

Google Play Music предоставляет свои плейлисты в этом нестандартном Content URI

// list all playlists with their ID and Name
Cursor cursor = getContentResolver().query(
    "content://com.google.android.music.MusicContent/playlists", 
    new String[] {"_id", "playlist_name" }, 
    null, null, null);

Поставщик контента Google Play Music использует следующие имена столбцов

  • isAllLocal
  • playlist_owner_name
  • hasLocal
  • hasRemote
  • hasAny
  • KeepOnId
  • playlist_art_url
  • playlist_share_token
  • _id
  • _count
  • playlist_owner_profile_photo_url
  • keeponSongCount
  • playlist_description
  • playlist_type
  • playlist_id
  • keeponDownloadedSongCount
  • PLAYLIST_NAME

Я бы никогда не понял этого без этого действительно полезного приложения Поставщик поставщика содержимого

Ответ 2

Попробуйте это.

String[] proj = {MediaStore.Audio.AudioColumns.TITLE,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media._ID};
Uri gMusicUri = Uri.parse("content://com.google.android.music.MusicContent/audio");
Cursor cursor = getApplicationContext().getContentResolver()
            .query(gMusicUri,
                    proj, null, null, null);

Ответ 3

Î попробовал запросить ContenProvider, как вы можете увидеть его в Logcat при запуске приложения Google для Google:

getContentResolver(). query (Uri.parse( "content://com.google.android.music.MusicContent/playlists" ), null, null, null, null);

но я не получил никакого результата:-( возможно, я делаю s.th. неправильно, не работал много с contentproviders раньше, или, возможно, contentprovider не является общедоступным для других приложений.