如何在android中一起查询外部和内部存储

时间:2013-01-04 14:21:16

标签: android storage media

我想从存储卡和手机内存中获取所有媒体文件/歌曲的列表。有没有办法做到这一点? 感谢。

1 个答案:

答案 0 :(得分:2)

内容解析器方式 - > MediaStore.Audio

Querying the Content Provider through Content Resolver Implement proper ListView and add the data which you get after querying Content resolver to ListView via Adapter

    String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
    android.provider.MediaStore.Audio.Albums.ALBUM };
    cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,columns, null, null, null);
    String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };
    int[] displayViews = new int[] { android.R.id.text1 };
   setListAdapter(new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, cursor, displayFields,displayViews));

传统方式::扫描.mp3文件的SD-CARD

使用以下代码获取sdcard目录的路径。

File root = Environment.getExternalStorageDirectory();
String rootPath= root.getPath();

从rootPath位置,您可以构建SD卡上任何文件的路径。例如,如果/DCIM/Camera/a.jpg处有图像,则绝对路径为rootPath + "/DCIM/Camera/a.jpg".

但是要列出SD卡中的所有文件,您可以使用以下代码

String listOfFileNames[] = root.list(YOUR_FILTER);

listOfFileNames将包含SD卡中存在的所有文件的名称,并传递过滤器设置的条件。

假设您只想列出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();
  }
};