首页 > 解决方案 > 使用 Intent.ACTION_GET_CONTENT 时如何不显示空的 0 B 文件?

问题描述

在我的应用程序中,我需要从存储中挑选图像并将它们显示在屏幕上。我正在使用 Intent 为我做这件事。我已经在下面发布了我的代码来执行此操作。

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 B 的空文件。这些文件在我手机上的文件管理器工具中不可见(我正在测试我的应用程序)。有什么办法可以解决这个问题——要么删除那些空文件,要么让意图忽略它们?

注意:我不知道这是否有帮助,但上面的图像是由我的应用程序生成的,它使用相机来捕获和保存图像,然后通过文件选择器将它们加载回来。带有预览的图像在文件管理器中是可见的并且不是 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);
    }

标签: javaandroidandroid-intentfilepicker

解决方案


推荐阅读