我正在编写一款Android mediaPlayer应用程序,因此我想扫描整个手机上的所有文件(即sdcard和手机内存)。我可以从sdcard读取,但无法从其根目录读取。也就是说,我只能从路径/sdcard/[folder]/
读取,并且它可以正常工作,但如果我进入/sdcard/
,应用程序就会崩溃。如何访问sdcard上的所有文件以及手机本身上的文件?
我正在编写一款Android mediaPlayer应用程序,因此我想扫描整个手机上的所有文件(即sdcard和手机内存)。我可以从sdcard读取,但无法从其根目录读取。也就是说,我只能从路径/sdcard/[folder]/
读取,并且它可以正常工作,但如果我进入/sdcard/
,应用程序就会崩溃。如何访问sdcard上的所有文件以及手机本身上的文件?
永远不要使用 /sdcard/ 路径,因为它不能保证始终可用。
请使用以下代码获取 sdcard 目录的路径。
File root = Environment.getExternalStorageDirectory();
String rootPath= root.getPath();
String listOfFileNames[] = root.list(YOUR_FILTER);
listOfFileNames将包含SD卡中存在并通过filter设置的所有文件的名称。
假设您只想列出mp3文件,则将以下过滤器类名称传递给list()函数。
FilenameFilter mp3Filter = new FilenameFilter() {
File f;
public boolean accept(File dir, String name) {
if(name.endsWith(".mp3")){
return true;
}
f = new File(dir.getAbsolutePath()+"/"+name);
return f.isDirectory();
}
};
Shash
Cusor cursor = getContentResolver().query(Albums.EXTERNAL_CONTENT_URI, new String[]{Albums._ID, Albums.ALBUM}, null, null, Albums.ALBUM + " collate nocase")
获取某个专辑的 MP3 音轨列表,按照音轨编号排序:Cursor cur = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, new String[]{Media._ID, Media.TITLE, Media.ALBUM}, Media.ALBUM_ID + "=? and " + Media.MIME_TYPE + "=?", new String[] {albumid, "audio/mpeg"}, Media.TRACK)
- Earl