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。因为它是一个片段。还有别的办法吗?除此之外没有其他错误请你不要否决它,而是解决问题好吗?使用你有经验和智慧的大脑的更好方法,不是吗?