// MediaStore不需要permission(妈的,这屁谁放的,权限必须加,不然直接崩!!),因为通过intent调起的activity已经具备这些权限。
// getContentResolver()方法定义Context类中,
// 在4.1之前,我们都可能会遇到过这样的场景,我们的应用程序访问了ContentProvider,但是这个ContentProvider意外挂了,
// 这个时候我们的应用程序也将被连带杀死!这是Android处于对数据安全的考虑而做的决定,不过貌似Google也感觉这样的方式不太友好,
// 所以在4.1以后提出了stable和unstable的概念。对于ContentResolver的query方法,我们将默认使用unstable的ContentProvider。
//http://www.cnblogs.com/zhainanJohnny/articles/3275908.html
// unstable
// ContentProvider在query过程中如果发生了DeadObjectExeption则会被捕获,进而重新获取一个stable
// 的ContentProvider。
// query(uri, projection, selection, selectionArgs, sortOrder,
// cancellationSignal)...最后一个参数是就是实现重新获取一个stable的ContentProvider。
// 但是下面的代码并不是用的6个参数的query而是五个参数的query
Cursor cursor = this.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
//歌曲信息
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String uriData = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
Song song = new Song(uriData, title, artist, size);
list.add(song);
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。