Курсор не работает для получения видео с устройства - PullRequest
2 голосов
/ 03 марта 2020

Я пытаюсь реализовать функцию клик-медиа (видео / изображения) в моем приложении чата, когда пользователь нажимает на любой медиа-файл, он открывает новый фрагмент с папкой изображений или видео в приложении, таких как 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: Невозможно перейти к определенному изображению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...