Как получить доступ к видеофайлам из папки SD-карты в приложении для Android

#android #listview #sd-card

#Android #listview #sd-карта

Вопрос:

Я пытаюсь отобразить видеофайлы в listview из папки, созданной на sdcard. Я использую контент-провайдера, такого как:

 videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null); 
  

Но он считывает все видеофайлы, хранящиеся на SD-карте. Я хочу получить доступ только к файлам, хранящимся в папке на SD-карте. Я также использовал:

 Uri a = Uri.parse(Environment.getExternalStorageDirectory() "/myfolder");
videocursor = managedQuery(a,proj, null, null, null); 
  

Но это выдает ошибку. Есть ли какой-нибудь способ включить путь к папке в managedQuery() или любой другой способ отображения видеофайлов из папки в listview?

Ответ №1:

Попробуйте это,

  String[] fileList;
    File videoFiles = new File(Environment.getExternalStorageDirectory() "/myfolder");

    if(videoFiles.isDirectory())
    {
        fileList=videoFiles.list();
    }

   for(int i=0;i<fileList.length;i  )
   {
       Log.e("Video:" i " File name",fileList[i]);
   }
  

Ответ №2:

Попробуйте получить файл из ресурсов, затем введите Uri.fromFile() :

  private boolean saveAs(int resource) { // save your file in sd card
        File root = Environment.getExternalStorageDirectory();
        String fileName = "your_file.png";
        InputStream input = getBaseContext().getResources().openRawResource(resource);
        String path = root.getAbsolutePath();
        FileOutputStream save;
        byte[] buffer = null;
        int size = 0;
        try {
            size = input.available();
            buffer = new byte[size];
            input.read(buffer);
            input.close();
        } catch (IOException e) {
            return false;
        }
        boolean exists = (new File(path)).exists();
        if (!exists) {
            new File(path).mkdirs();
        }

        try {
            File deleteFile = new File(path   "/"   fileName);
            if (deleteFile.exists()) {
                deleteFile.delete();
            }
            save = new FileOutputStream(path   "/"   fileName);
            save.write(buffer);
            save.flush();
            save.close();
        } catch (FileNotFoundException e) {
            return false;
        } catch (IOException e) {
            return false;
        }

        return true;
    }
}

    Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
                                "your_file.png")) // get it from Uri
  

Ответ №3:

Мы можем использовать managedquerry, как показано ниже, чтобы получить видео из указанной папки на SD-карте….

 videoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
    videoProjection, MediaStore.Images.Media.DATA   " like ? ",
    new String[]{"%M-Videos%"}, null);