0

I am working in application in which I have to capture image from camera and save that image inside folder, Right now my code is working fine upto marshmallow but when testing in nougat, I am unable to save as well as unable to create folder. I have also given all the permission. Please tell me what I am doing wrong

This method is not working in naught

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
        if (pictureFile == null){
            Log.d("", "Error creating media file, check storage permissions: ");
            return;
        }

        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
           mCamera.stopPreview();
        } catch (FileNotFoundException e) {
            Log.d("", "File not found: " + e.getMessage());
        } catch (IOException e) {
            Log.d("", "Error accessing file: " + e.getMessage());
        }
    }

};

This is my code for create and saving the image file

 private  File getOutputMediaFile(int type){
        // To be safe, you should check that the SDCard is mounted
        // using Environment.getExternalStorageState() before doing this.

        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES), "Carco");
        // This location works best if you want the created images to be shared
        // between applications and persist after your app has been uninstalled.

        // Create the storage directory if it does not exist
        if (! mediaStorageDir.exists()){
            if (! mediaStorageDir.mkdirs()){
                Log.d("Carco", "failed to create directory");
                return null;
            }
        }

        // Create a media file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        File mediaFile;

        ///storage/emulated/0/Pictures/Carco

        if (type == MEDIA_TYPE_IMAGE){

            String img_name = "IMG_"+ timeStamp + ".jpg";

            mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                    img_name);


            imgPath = mediaStorageDir.getPath()+"/"+img_name;



            Log.e("Path: ",mediaStorageDir.getPath()+"/"+img_name);

        } else {
            return null;
        }

        return mediaFile;
    }
Anshul Khare
  • 219
  • 1
  • 3
  • 15

1 Answers1

0

Google for runtime permissions.

You are #1237 with this problem this year.

/storage/emulated/0 IS BLANK. (using nbsp-team/ Material File Picker)

greenapps
  • 11,154
  • 2
  • 16
  • 19