Android 我应该给出什么路径来列出来自外部和内部存储的文件?

Android 我应该给出什么路径来列出来自外部和内部存储的文件?,android,android-studio,Android,Android Studio,我正在为android制作一个视频播放器,但我无法列出来自内部和外部存储器的所有视频 我使用了“/mnt/”和“/storage/”作为路径,但是“/mnt/”列出了所有的视频,即使是ads缓存视频,“/storage/”也没有列出内存中的视频。甚至Environment.getExternalStorageDirectory().getAbsolutePath()也没有正确列出视频 directory = new File(Environment.getExternalStorageDirec

我正在为android制作一个视频播放器,但我无法列出来自内部和外部存储器的所有视频

我使用了“/mnt/”和“/storage/”作为路径,但是“/mnt/”列出了所有的视频,即使是ads缓存视频,“/storage/”也没有列出内存中的视频。甚至
Environment.getExternalStorageDirectory().getAbsolutePath()
也没有正确列出视频

directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath());

   private ArrayList<File> getFile(File directory)
    {

        File listFiles[] = directory.listFiles();
        if(listFiles!=null && listFiles.length>0)
        {
            for(int i=0;i<listFiles.length;i++)
            {
                if(listFiles[i].isDirectory())
                {
                    getFile(listFiles[i]);
                }
                else{
                    listPermission = false;
                    if(listFiles[i].getName().endsWith(".mp4") || listFiles[i].getName().endsWith(".mkv"))
                    {
                        for(int j=0;j<fileArrayList.size();j++)
                        {
                            if(fileArrayList.get(j).getName().equals(listFiles[i].getName()))
                            {
                                listPermission = true;
                            }
                        }

                        if(listPermission)
                        {
                            listPermission = false;
                        }else{
                            fileArrayList.add(listFiles[i]);
                            Set<File> set = new HashSet<>(fileArrayList);
                            fileArrayList.clear();
                            fileArrayList.addAll(set);
              //              Log.i("Files_Check", listFiles[i].getName());
                        }
                    }
                }
            }
        }

        return fileArrayList;
    }
directory=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
私有ArrayList getFile(文件目录)
{
文件listFiles[]=目录.listFiles();
if(listFiles!=null&&listFiles.length>0)
{

对于(int i=0;i,使用MediaStore与我一起工作

private ArrayList<File> GetVideoFile()
    {
        ContentResolver contentResolver = getContext().getContentResolver();
        Uri videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
        String sortOrder = MediaStore.Video.Media.DATE_MODIFIED+ " ASC";
        Cursor cursor = contentResolver.query(videoUri,null,null,null,sortOrder);
 try {

            if (cursor != null && cursor.moveToFirst()) {
                int videoPath = cursor.getColumnIndex(MediaStore.Video.Media.DATA);
                do {

                    String path = cursor.getString(videoPath);
                    File file = new File(path);
                    fileArrayList.add(file);

                } while (cursor.moveToNext());

            }
        }catch (Exception e)
        {
            Log.i("CursorHandleException", e.getMessage());
        }
        return fileArrayList;
    }
private ArrayList GetVideoFile()
{
ContentResolver ContentResolver=getContext().getContentResolver();
Uri videoUri=MediaStore.Video.Media.EXTERNAL\u CONTENT\u Uri;
字符串sortOrder=MediaStore.Video.Media.DATE\u MODIFIED+“ASC”;
Cursor Cursor=contentResolver.query(videoUri,null,null,null,sortOrder);
试一试{
if(cursor!=null&&cursor.moveToFirst()){
int videoPath=cursor.getColumnIndex(MediaStore.Video.Media.DATA);
做{
字符串路径=cursor.getString(videoPath);
文件=新文件(路径);
添加(文件);
}while(cursor.moveToNext());
}
}捕获(例外e)
{
i(“CursorHandleException”,e.getMessage());
}
返回fileArrayList;
}

不要执行任何操作。查询
MediaStore
。调出视频列表并在
回收视图中显示它们。