我无法使用此编码从我的 SD 卡中获取歌曲。我可以这样做还是需要 Content Provider 这样做

Posted

技术标签:

【中文标题】我无法使用此编码从我的 SD 卡中获取歌曲。我可以这样做还是需要 Content Provider 这样做【英文标题】:I am not able to fetch songs from my SD card using this coding.Can I do this way or I need to do it by Content Provider 【发布时间】:2014-06-06 08:57:46 【问题描述】:

这是代码:

public class Songs   
final String MEDIA_PATH = new String("/Internal SD card/");
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();  
private Context mContext;  

public Songs(Context context)
    mContext=context;


public ArrayList<HashMap<String, String>> getPlayList()  
    File home = mContext.getDir("Music", Context.MODE_PRIVATE);;//new File(MEDIA_PATH);

    if (home.listFiles(new FileExtensionFilter()).length > 0)   
       for (File file : home.listFiles(new FileExtensionFilter())) 
            HashMap<String, String> song = new HashMap<String, String>();
            song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
            song.put("songPath", file.getPath());

            // Adding each song to SongList
            songsList.add(song);
        
    
 // return songs list array
    return songsList;

    class FileExtensionFilter implements FilenameFilter 
        public boolean accept(File dir, String name) 
            return (name.endsWith(".mp3") || name.endsWith(".MP3"));
        


  

【问题讨论】:

添加更多信息,您正在尝试做什么、问题是什么以及您已经尝试过什么。标题不是这样做的地方 【参考方案1】:

您必须在 Manifest 文件中获得许可。

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

【讨论】:

是的 Pratyesh 我已经添加了读写(外部存储)。【参考方案2】:

通过运行

File home = mContext.getDir("Music", Context.MODE_PRIVATE);

您将获得一个指向您的应用程序私有目录的路径(例如 /data/data/your.package.name/app_Music)。如果它不存在,它将被创建。如果您想从 sd 卡上的某个特定目录中获取音乐,您可以使用如下方式:

File home = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "path/to/your/dir");

【讨论】:

以上是关于我无法使用此编码从我的 SD 卡中获取歌曲。我可以这样做还是需要 Content Provider 这样做的主要内容,如果未能解决你的问题,请参考以下文章

Flex/air mobile - 显示来自 SD 卡的所有 mp3 歌曲,带有 id3 信息和海报图像

如何以编程方式备份​​ SD 卡中的 sqlite 文件?

防止其他应用访问我的应用存储在 sd 卡中的图像

我无法从我的 xml 中以 xsl 编码获取子循环中的根节点数据

从 SD 卡中获取图像,压缩,然后将其保存回 SD?

重命名 SD 卡中的文件夹