在Android中查询Google Play音乐数据库

时间:2012-03-12 14:52:26

标签: android android-contentprovider

我正在尝试查询由“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音乐正在使用自己的数据库来存储播放列表,而其他播放器使用内容提供商和uri MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI来存储播放列表。有没有办法让Google Play音乐创建播放列表?

3 个答案:

答案 0 :(得分:14)

我知道这个帖子已经老了,但我也一直在努力解决这个问题。

Google Play音乐会根据此非标准内容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音乐内容提供商使用以下列名称

  • 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

如果没有这个真正有用的应用Content Provider Helper

,我绝不会想到这一点

答案 1 :(得分:1)

试试这个。

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);

答案 2 :(得分:0)

Î尝试查询ContenProvider,就像你在启动谷歌音乐应用程序时可以在Logcat中看到它一样:

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

但是我没有得到任何结果:-(也许我做错了,之前没有与内容提供商合作太多,或者内容提供者可能不公开其他应用程序。