【问题标题】:No access to device storage files无法访问设备存储文件
【发布时间】:2019-08-05 21:51:02
【问题描述】:

我正在尝试将图像存储到设备中的特定文件夹中。

这是存储图像的代码:

private static final String IMAGE_DIRECTORY = "/capenergy_camera";


private void saveImage() {
        if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            showLoading("Saving...");
            File file = new File(Environment.getExternalStorageDirectory()+IMAGE_DIRECTORY
                    + File.separator + ""
                    + System.currentTimeMillis() + ".png");
            try {
                file.createNewFile();

                SaveSettings saveSettings = new SaveSettings.Builder()
                        .setClearViewsEnabled(true)
                        .setTransparencyEnabled(true)
                        .build();

                mPhotoEditor.saveAsFile(file.getAbsolutePath(), saveSettings, new PhotoEditor.OnSaveListener() {
                    @Override
                    public void onSuccess(@NonNull String imagePath) {
                        hideLoading();
                        showSnackbar("Image Saved Successfully");
                        mPhotoEditorView.getSource().setImageURI(Uri.fromFile(new File(imagePath)));
                    }

                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        hideLoading();
                        showSnackbar("Failed to save Image");
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
                hideLoading();
                showSnackbar(e.getMessage());
            }
        }
    }

我不知道为什么存储文件夹总是添加路径/emulated/0,我不知道如何访问该文件夹。

示例:/storage/emulated/0/capenergy_camera/1565010745877.png

【问题讨论】:

    标签: android


    【解决方案1】:

    我不知道为什么存储文件夹总是添加路径 /emulated/0

    在您设备上的设备文件系统中,/storage/emulated/0 是 Android SDK 所指的 external storage 的根。这是一个相当典型的设置。

    我不知道如何访问该文件夹

    使用 Android Studio 中的设备文件资源管理器。

    或者,使用adb shell

    或者,通过 USB 电缆将设备插入您的开发机器并安装用户称为“内部存储”的东西(尽管它实际上是 SDK 所指的外部存储)。但是,您的文件不会立即显示在此处,因为它没有被 MediaStore 索引。使用MediaScannerConnection.scanFile() 可以更快地将其编入索引。

    或者,如果您安装了某个设备上的文件管理器,请使用它。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 2021-10-08
    • 2016-05-04
    • 1970-01-01
    • 2016-09-26
    • 2019-08-16
    • 2019-12-25
    • 2021-06-17
    相关资源
    最近更新 更多