// 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); } |
|
来自: 一戒745zia4sgs > 《音频》