Java 在android中保存图像时权限被拒绝

Java 在android中保存图像时权限被拒绝,java,android,permissions,android-permissions,Java,Android,Permissions,Android Permissions,我无法保存图像文件,即使在我请求权限之后。 我将权限添加到清单文件,如下所示: permission.WRITE_EXTERNAL_STORAGE 但我一直看到这个错误: 拒绝许可 以下是相关代码: @SuppressLint("MissingPermission") private void saveImage() { if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { showLo

我无法保存图像文件,即使在我请求权限之后。 我将权限添加到清单文件,如下所示:

permission.WRITE_EXTERNAL_STORAGE
但我一直看到这个错误:

拒绝许可

以下是相关代码:

@SuppressLint("MissingPermission")
private void saveImage() {
    if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        showLoading("Saving...");
        File file = new File(Environment.getExternalStorageDirectory()
                + 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");
                    mSaveImageUri = Uri.fromFile(new File(imagePath));
                    mPhotoEditorView.getSource().setImageURI(mSaveImageUri);
                }

                @Override
                public void onFailure(@NonNull Exception exception) {
                    hideLoading();
                    showSnackbar("Failed to save Image");
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
            hideLoading();
            showSnackbar(e.getMessage());
        }
    }
}
下面是错误日志:

D/ViewRootImpl@faa5b66[EditImageActivity]: setView = com.android.internal.policy.DecorView@63d69b7 TM=true MM=false
W/System.err: java.io.IOException: Permission denied
W/System.err:     at java.io.UnixFileSystem.createFileExclusively0(Native Method)
        at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)

检查Android Q中的权限是否连续发生了变化:


在Android 9上,您需要请求运行时权限,我认为您的操作不正确(请参阅)

在Android上,应用程序私有目录之外的10个文件路径是毫无价值的

展望未来,最好只使用媒体存储或存储访问框架


媒体商店在您的情况下可能更好

你在运行什么Android版本?@Andrew在Android 9和10上运行