Как мне не показывать пустые файлы 0 B при использовании Intent.ACTION_GET_CONTENT? - PullRequest
0 голосов
/ 19 июня 2020

В моем приложении мне нужно выбрать изображения из хранилища и отобразить их на экране. Я использую намерение сделать это за себя. Я разместил свой код для этого ниже.

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");                                      
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        try {
            startActivityForResult(
                    Intent.createChooser(intent, "Select a File to Upload"),
                    FILE_SELECT_CODE);
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(this, "Please install a File Manager.",
                    Toast.LENGTH_SHORT).show();
        }

Проблема в том, что при открытии намерения я вижу кучу пустых файлов размером 0 Б. Эти файлы не отображаются в инструменте «Диспетчер файлов» на моем телефоне (где я тестирую свой приложение). Есть ли способ исправить это - либо путем удаления этих пустых файлов, либо путем намерения их игнорировать?

Примечание: я не знаю, полезно ли это, но изображения выше созданы моим приложением, который использует камеру для захвата и сохранения изображений, а затем загрузки их обратно через средство выбора файлов. Изображение с предварительным просмотром отображается в диспетчере файлов и не равно 0 B, но остальные невидимы.

Снимок экрана средства выбора файлов

Изменить: вот код Я использую для захвата изображений с помощью камеры и их сохранения.

public void captureImageAction()
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED ||
                    checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {

                String[] permission = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};

                requestPermissions(permission, PERMISSION_CODE);
            } else {
                openCamera();
            }
        } else {
            openCamera();
        }
    }

    private void openCamera() {
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "New Picture");
        values.put(MediaStore.Images.Media.DESCRIPTION, "From Camera");

        image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
        int IMAGE_CAPTURE_CODE = 1001;
        startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...