Java 在Android设备上列出所有一种文件类型?

Java 在Android设备上列出所有一种文件类型?,java,android,multithreading,file,Java,Android,Multithreading,File,例如,我想检索内部和外部存储器上所有.mp3文件的列表。我还希望每个.mp3文件的路径(字符串)可供参考(将它们存储在列表?)我如何才能做到这一点?这是一个相对昂贵的操作吗?如果是这样,则应将其放在线程上,并在线程运行时向用户显示“加载”ProgressDialog?请查找下面的函数。它将得到所有的mp3文件存储在外部和内部存储器 public void getAllSongs() { Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_

例如,我想检索内部和外部存储器上所有.mp3文件的列表。我还希望每个.mp3文件的路径(
字符串
)可供参考(将它们存储在
列表
?)我如何才能做到这一点?这是一个相对昂贵的操作吗?如果是这样,则应将其放在线程上,并在线程运行时向用户显示“加载”
ProgressDialog

请查找下面的函数。它将得到所有的mp3文件存储在外部和内部存储器

public void getAllSongs() {

    Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

    cursor = managedQuery(allsongsuri, STAR, selection, null, null);

    if (cursor != null) {
        if (cursor.moveToFirst()) {
            do {
                song_name = cursor
                        .getString(cursor
                                .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                int song_id = cursor.getInt(cursor
                        .getColumnIndex(MediaStore.Audio.Media._ID));

                String fullpath = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Audio.Media.DATA));
                fullsongpath.add(fullpath);

                album_name = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Audio.Media.ALBUM));
                int album_id = cursor.getInt(cursor
                        .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));

                artist_name = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Audio.Media.ARTIST));
                int artist_id = cursor.getInt(cursor
                        .getColumnIndex(MediaStore.Audio.Media.ARTIST_ID));


            } while (cursor.moveToNext());

        }
        cursor.close();
        db.closeDatabase();
    }
}