无法使用getFileDir将图像保存到Android中的照片/图库

问题描述 投票:0回答:1

我有以下代码,并希望将数据保存在内部存储中,如照片/图库,但无法使用以下代码。如何将数据保存到内部存储?一些样品或提示会很棒!期待您的来信!

我正在使用当前代码来保存数据。

@SuppressLint("MissingPermission")
    private void saveImage() {
        if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            showLoading("Saving...");
            File file = new File(getBaseContext().getFilesDir()
                    + 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());
            }
        }
    }
java android imageview android-imageview java-io
1个回答
0
投票
private void saveImage() {

        if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            showLoading("Saving...");

            filename = String.valueOf(System.currentTimeMillis()) + ".png";
            File file = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "/" + getResources().getString(R.string.app_name));

            try {
                if (!file.exists())
                    file.mkdir();

                file.createNewFile();
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    // public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.
                    return;
                }
                mPhotoEditor.saveAsFile(file.getAbsolutePath() + "/" + filename, new PhotoEditor.OnSaveListener() {
                    @Override
                    public void onSuccess(@NonNull String imagePath) {
                        hideLoading();
                        showSnackbar("Image Saved Successfully");
                        MediaScannerConnection.scanFile(EditImageActivity.this, new String[]{file.toString()}, null,
                                new MediaScannerConnection.OnScanCompletedListener() {
                                    public void onScanCompleted(String path, Uri uri) {
                                        Log.i("ExternalStorage", "Scanned " + path + ":");
                                        Log.i("ExternalStorage", "-> uri=" + uri);
                                    }
                                });
                        Log.e(".provider", " : " + getPackageName() + ".provider");
                        Log.e("filepath", " : " + imagePath);
                        if (imagePath != null && !imagePath.isEmpty()) {

                            File file1 = new File(imagePath);
                            Log.e("file1", " : " + file1);

                            if (file1 != null) {
                                Uri imageUri = FileProvider.getUriForFile(
                                        EditImageActivity.this,
                                        getPackageName() + ".fileprovider", //(use your app signature + ".provider" )
                                        file1);
                                mPhotoEditorView.getSource().setImageURI(imageUri);
                                Log.e("imageUri", " : " + imageUri);

                            }
                        }
                    }

                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        hideLoading();
                        showSnackbar("Failed to save Image");
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
                hideLoading();
                showSnackbar(e.getMessage());
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.