Android 按字母顺序获取所有歌曲的专辑列表

Android 按字母顺序获取所有歌曲的专辑列表,android,android-fragments,android-activity,android-mediaplayer,Android,Android Fragments,Android Activity,Android Mediaplayer,这是我写的代码,错误是getContentResolver().query(MediaStore.Audio.Media.Album.EXTERNAL\u CONTENT\u URI,proj,null,null,null)出现了无法解析相册的错误。这是获得专辑列表的正确方法还是有其他更好的方法?我想对流派和艺术家做同样的事情,所以如果他们有不同的方式,也请告诉他们: public class AlbumsFragment extends Fragment{ public AlbumsFragm

这是我写的代码,错误是
getContentResolver().query(MediaStore.Audio.Media.Album.EXTERNAL\u CONTENT\u URI,proj,null,null,null)
出现了无法解析相册的错误。这是获得专辑列表的正确方法还是有其他更好的方法?我想对流派和艺术家做同样的事情,所以如果他们有不同的方式,也请告诉他们:

public class AlbumsFragment extends Fragment{
public AlbumsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_albums, container, false);
    ListView albumView=(ListView)view.findViewById(R.id.albumsView);
    ArrayList<String> albumList = new ArrayList<>();
    String[] proj = {MediaStore.Audio.Media.ALBUM};
    final Cursor albumCursor = getActivity().getContentResolver().query(MediaStore.Audio.Media.Album.EXTERNAL_CONTENT_URI, proj, null, null, null);

    if (albumCursor != null) {
        if (albumCursor.moveToFirst()) {
            do {
                int albumIndex = albumCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);
                albumList.add(albumCursor.getString(albumIndex));
            } while (albumCursor.moveToNext());
        }
    }
    albumCursor.close();
    return view;
            }
公共类AlbumsFragment扩展了片段{
公共相册片段(){}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u相册,容器,false);
ListView albumView=(ListView)view.findViewById(R.id.albumView);
ArrayList albumList=新建ArrayList();
字符串[]proj={MediaStore.Audio.Media.ALBUM};
最终游标albumCursor=getActivity().getContentResolver().query(MediaStore.Audio.Media.Album.EXTERNAL_CONTENT_URI,proj,null,null,null);
如果(albumCursor!=null){
if(albumCursor.moveToFirst()){
做{
int-albumIndex=albumCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);
添加(albumCursor.getString(albumIndex));
}while(albumCursor.moveToNext());
}
}
close();
返回视图;
}
}代码将是

你应该像这样查询相册

String[] projection = new String[] { Albums._ID, Albums.ALBUM, Albums.ARTIST, Albums.ALBUM_ART, Albums.NUMBER_OF_SONGS };
String selection = null;
String[] selectionArgs = null;
String sortOrder = Media.ALBUM + " COLLATE NOCASE ASC";
Cursor cursor = contentResolver.query(Albums.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, sortOrder);

这是一个片段,我尝试对contentResolver使用getActivity()方法,但它不起作用。请粘贴日志猫。它找不到符号“contentResolver”。可能是因为我没有扩展AppCompatActivity。因为它是一个片段。还有别的办法吗?除此之外没有其他错误请你不要否决它,而是解决问题好吗?使用你有经验和智慧的大脑的更好方法,不是吗?