Когда пытаюсь сохранить фотографию, вылетает исключение 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;
}
}
}