Я пытаюсь реализовать функцию клик-медиа (видео / изображения) в моем приложении чата, когда пользователь нажимает на любой медиа-файл, он открывает новый фрагмент с папкой изображений или видео в приложении, таких как whatsapp и telegram.
I реализован код, который открывает папку приложения для изображений и показывает все изображения. Здесь мне нужно показать все изображения, которые я делаю, но показать первое изображение, на которое нажал пользователь. для этого у меня есть полное имя изображения, как это /storage/emulated/0/xmpp/Media/xmpp Images/xmpp IMG_1582477568462.jpg
.
Для видео я также использую тот же код, но я получаю 0 результат от курсора. Я не знаю, что не так с моим кодом
private ArrayList<String> getFolderItems(String folderName, String fileName, int type){
String[] colums = null ;
String orderBy = null;
String columsName = null;
Uri uri = null;
String selection = null;
String[] selectionArgs = null;
String folder = /storage/emulated/0/xmpp/Media/xmpp Images+folderName;
Log.d(TAG, "getFolderItems: "+folderName+" "+fileName+" "+type);
Log.d(TAG, "getFolderItems: Destination Folder == "+folder);
// 0 for images 1 for video
if (type == 0){
Log.d(TAG,"Type == 0");
colums = new String[]{MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID};
orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC";
uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
columsName = MediaStore.Images.Media.DATA;
selection = MediaStore.Images.Media.DATA + " like ? ";
selectionArgs = new String[]{"%" + folder + "%"};
}else {
Log.d(TAG,"Type == 1");
colums = new String[]{MediaStore.Video.Media.DATA, MediaStore.Video.Media._ID};
orderBy = MediaStore.Video.Media.DATE_ADDED + " DESC";
uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
columsName = MediaStore.Video.Media.DATA;
selection = MediaStore.Video.Media.DATA + " like ? ";
selectionArgs = new String[]{"%" + folder + "%"};
}
Cursor cursor = MyApplication.getmContext().getContentResolver().query(
uri,
colums,
selection,
selectionArgs,
orderBy);
int count = cursor.getCount();
if (galleryItems == null){
galleryItems = new ArrayList<>();
}
for (int i = 0; i <count ; i++) {
cursor.moveToPosition(i);
int index = cursor.getColumnIndex(columsName);
Log.d(TAG, "getFolderItems: "+cursor.getString(index));
galleryItems.add(cursor.getString(index));
}
cursor.close();
Log.d(TAG, "getFolderItems: Gallery Item Size == "+galleryItems.size());
return galleryItems;
}
для показа изображений / видео, которое я использую RecyclerView
, и я также перепроверен, если видео существует в папке с правильным именем Video_1583239285257.mp4
Итак, в приведенном выше коде есть 2 вопроса, которые мне нужно решить. Пожалуйста, помогите мне в этом.
1: Не получается никакого результата для видео-курсора
2: Невозможно перейти к определенному изображению.