java 如何保存图库中的图片

0wi1tuuw  于 7个月前  发布在  Java
关注(0)|答案(1)|浏览(61)

我的相机应用程序可以制作照片,但它们总是保存在应用程序中,我想在画廊中看到它们,但我想继续使用ImageCapture。我使用Android 14。

public void takePicture(ImageCapture imageCapture) {
    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DCIM) + "/" + System.currentTimeMillis() + ".jpg");
    ImageCapture.OutputFileOptions outputFileOptions = new ImageCapture.OutputFileOptions.Builder(file).build();
    imageCapture.takePicture(outputFileOptions, Executors.newSingleThreadExecutor(), new ImageCapture.OnImageSavedCallback() {

            @Override
            public void onImageSaved(ImageCapture.OutputFileResults outputFileResults) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this, "Image saved at: " + file.getPath(), Toast.LENGTH_SHORT).show();
                    }
                });
                startCamera(cameraFacing);
            }
    
            @Override
            public void onError(ImageCaptureException exception) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this, "Failed to save: " + exception.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
                startCamera(cameraFacing);
            }
    
        });

字符串

euoag5mw

euoag5mw1#

您可以使用此代码将图像保存到Downloads/AppName文件夹中

try {
        File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/AppName");
        File dir = new File(root.getAbsolutePath() + File.separator);
        if (!dir.exists()){
            dir.mkdir();
        }

        //Create file..
        File file = new File(root.getAbsolutePath() + File.separator + "fileName" + System.currentTimeMillis() + ".jpeg");
        file.createNewFile();

        FileOutputStream out = new FileOutputStream(file);
        out.write(bytes);
        out.close();

        Toast.makeText(requireContext(), "File Downloaded...", Toast.LENGTH_SHORT).show();

        // OPENING FOLDER LOCATION

        // getting download/appName folder permission

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
            String path = Environment.getExternalStorageDirectory() + "/Download/AppName";
            File folder = new File(path);
            String startDir = "", secondDir, finalDirPath;

            if (folder.exists()) {
                startDir = "Download%2FAppName";
            }

            StorageManager sm = (StorageManager) requireContext().getSystemService(Context.STORAGE_SERVICE);

            Intent intent = sm.getPrimaryStorageVolume().createOpenDocumentTreeIntent();

            Uri uri = intent.getParcelableExtra("android.provider.extra.INITIAL_URI");

            String scheme = uri.toString();

            scheme = scheme.replace("/root/", "/document/");

            finalDirPath = scheme + "%3A" + startDir;

            uri = Uri.parse(finalDirPath);

            intent.putExtra("android.provider.extra.INITIAL_URI", uri);

            startActivity(intent);

        }else{
            Uri data = FileProvider.getUriForFile(requireContext(),
                    requireContext().getPackageName() + ".provider",
                    file);

            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(data, "application/jpeg");

            startActivity(intent);
        }

    } catch (Exception e) {
        Toast.makeText(getContext(), "No apps found to open downloaded file", Toast.LENGTH_SHORT).show();
        Log.d("error", "downloadPdf: error" + e.getMessage());
        e.printStackTrace();
    }

字符串
我希望这能帮助你保存你的形象。随时问我任何问题,如果你遇到任何问题。

相关问题