#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);