Когда пытаюсь сохранить фотографию, вылетает исключение java.io.IOException: Permission denied

Пытаюсь написать приложение которое делает фотографию и отправляет ее на сервер, но застрял в самом начале и не знаю что делать. Мне надо получить путь куда сохранить сделанную фотографию, я из этого урока понял что надо воспользоваться методом File.createTempFile() но он пробрасывает исключение java.io.IOException: Permission denied. Я знаю, что разрешения надо получать во время исполнения и делаю это, но все равно получаю исключение. Вот мой код:

imageView = findViewById(R.id.image);

    Button cameraGo = findViewById(R.id.make_photo);
    cameraGo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            clickCamera();
        }
    });


}

private File createImageFile() throws IOException {
  
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DCIM), "Camera");
    File image = File.createTempFile(imageFileName,".jpg", storageDir);

    mCurrentPhotoPath = "file:" + image.getAbsolutePath();
    return image;
}

private void startCamera(){
    takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }
}

private void clickCamera() { 
    int permissionStatus = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permissionStatus == PackageManager.PERMISSION_GRANTED) {
        startCamera();
    } else {
        ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
                REQUEST_CODE_PERMISSION_READ_CONTACTS);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        imageView.setImageBitmap(imageBitmap);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_CODE_PERMISSION_READ_CONTACTS:
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission granted
                startCamera();
            } else {
                // permission denied
                Log.e("Privet", "Net dostupa");
            }
            return;

    }
}

}


Ответы (0 шт):