安卓拒绝读取文件



我正在尝试将所有mp3文件加载到数组中,但是android一直显示此错误:java.lang.NullPointerException: Attempt to get length of null array,错误在此行:if(path.isDirectory() && path.listFiles().length > 0)

我将这两个权限行添加到我的清单文件中,但没有效果:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我的函数最初由以下人员调用: locateSongs(Environment.getExternalStorageDirectory());

这是我迭代完整设备的函数:

 private void locateSongs(File path) {
        if(path.isDirectory() && path.listFiles().length > 0){
            File files[] = path.listFiles();
            for(File f : files){
                locateSongs(f.getAbsoluteFile());
            }
        }else if(path.isFile() && path.getName().contains(".mp3")){ // // TODO: 2/5/2016 add more types other than mp3
            MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever();
            metaRetriver.setDataSource(path.getAbsolutePath());
            Song newSong = new Song();
            newSong.setAlbum(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
            newSong.setArtist(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
            newSong.setAuthor(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR));
            newSong.setName(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE));
            newSong.setBitRate(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
            newSong.setGenre(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE));
            newSong.setDataSourse(path.getAbsolutePath());
            newSong.setDuration(metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
            byte[] art = metaRetriver.getEmbeddedPicture();
            Bitmap songImage = BitmapFactory.decodeByteArray(art, 0, art.length);
            newSong.setImage(songImage);
        }
    }

感谢所有试图提供帮助的人,我已经找到了解决方案,问题是由于使用了Android 6.0(棉花糖)模拟器,问题在这里解决了:http://developer.android.com/training/permissions/requesting.html

最新更新