分享

Android获取本地音乐列表

 一戒745zia4sgs 2015-12-25
// 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);
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约