Какой путь я должен дать для списка файлов из внешнего и внутреннего хранилища? - PullRequest
0 голосов
/ 27 сентября 2019

Я делаю видеоплеер для Android, но я не могу перечислить все видео из внутренней и внешней памяти.

Я использовал "/ mnt /" и "/ storage /" в качестве путей, но "/ mnt /" перечисляет все видео, даже кеш рекламы, а "/ 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;
    }

1 Ответ

0 голосов
/ 28 сентября 2019

Использование 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...